You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express路由/:id调用Sequelize findByPk()返回空对象问题排查

问题排查与修复

核心错误:findByPk 参数使用错误

你当前代码里的 findByPk 调用不符合 Sequelize 的 API 规范:

const oneCategory = await Category.findByPk({
  include: [{ model: Product }]
});

findByPk 的第一个参数必须是要查询的主键值(即 URL 中的 :id),查询选项(比如 include)需作为第二个参数传入。你未传入主键 ID,Sequelize 无法定位具体分类,因此返回空对象。

修复后的代码

router.get('/:id', async (req, res) => {
  try {
    // 正确传递主键ID和查询选项
    const oneCategory = await Category.findByPk(req.params.id, {
      include: [{ model: Product }]
    });
    if (!oneCategory) {
      res.status(404).json({ message: 'No category found with that id!' });
      return;
    }
    res.status(200).json(oneCategory);
  } catch (error) {
    res.status(500).json(error);
  }
});

额外检查点

  • 确认 Category 和 Product 模型已正确定义关联(比如 Category.hasMany(Product) 和 Product.belongsTo(Category)),否则 include 无法加载关联的产品数据。
  • 验证 Insomnia 请求的 URL 已传入正确 ID(例如 GET /categories/1,而非仅 /categories/)。
  • 可取消注释 console.log(oneCategory),在控制台查看查询结果,进一步排查关联数据未加载的问题。

内容的提问来源于stack exchange,提问作者Anakela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:09:29