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

如何通过Sequelize单查询获取指定商家的所有商品问题?

使用Sequelize单查询获取商家所有商品的问题

首先确保你的Sequelize模型已经正确定义关联关系:

  • 商家(Vendors)与商品(Products):一对多关联
    Vendors.hasMany(Products, { foreignKey: 'vendorId' });
    Products.belongsTo(Vendors, { foreignKey: 'vendorId' });
    
  • 商品(Products)与问题(Questions):一对多关联
    Products.hasMany(Questions, { foreignKey: 'productId' });
    Questions.belongsTo(Products, { foreignKey: 'productId' });
    

接下来可以通过两种方式实现单查询需求:

方式1:查询商家信息,同时嵌套获取所有商品及对应问题

如果需要展示商家、商品、问题的层级结构,用这种方式:

const vendorData = await Vendors.findByPk(传入的商家ID, {
  include: [
    {
      model: Products,
      include: [Questions] // 嵌套查询商品对应的所有问题
    }
  ]
});

返回结果中,vendorData.products是该商家的所有商品数组,每个商品对象里的questions字段就是对应商品的全部问题。

方式2:直接查询该商家所有商品的问题(含商品信息)

如果只需要问题列表并附带对应商品信息,用这种方式更直接:

const allQuestions = await Questions.findAll({
  include: [
    {
      model: Products,
      include: [
        {
          model: Vendors,
          where: { id: 传入的商家ID } // 通过商家ID过滤
        }
      ]
    }
  ]
});

返回的allQuestions就是该商家所有商品的问题集合,每个问题对象里包含对应的product和vendor信息。

两种方式都是通过Sequelize自动生成JOIN语句,仅执行一次数据库查询,避免了两次查询加遍历的低效操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:00:54