【问题标题】:Get data from main table by querying sub table and main table通过查询子表和主表从主表中获取数据
【发布时间】:2020-07-03 10:34:46
【问题描述】:

我在一个太多的关系中有表产品和子表系列

const Product = sequelize.define('product', {
   id: {type: Sequelize.INTEGER, autoIncrement: true, allowNull: false, primaryKey: true},
   order: Sequelize.STRING
})

const Series = sequelize.define('series', {
   id: {type: Sequelize.INTEGER, autoIncrement: true, allowNull: false, primaryKey: true},
   name: Sequelize.STRING,
})

关系

Product.belongsTo(Series);
Series.hasMany(Product);

我想获取系列名称是一些文本并且产品订单名称是一些文本的所有产品。

exports.searchProduct = async (req, res, next) => {
   const name = req.body.name || ''
   const order = req.body.order || ''
   try {
      const series = await Series.findAll({
         where: {
            name: {[Op.like]: '%' + name + '%'}}
      });

      const products = await series.getProducts  //<= get stuck here
      res.status(200)
         .json({result: products})
   }
   catch (err) {
      if (!err.statusCode) {
         err.statusCode = 500
      }
      next(err);
   }
}

我设法查询了系列,但卡住了用订单名称查询产品结果。那么如何使用订单名称查询产品结果呢?我尝试在 getProducts 中添加 where 子句,但出现错误 getProducts is not a function

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    这个怎么样

      cosnt products = await Products.findAll({
          where: {
              order: {[Op.like]: '%' + order + '%'}
          },
          include: [
              {
                  model: Series,
                  where: {
                        name: {[Op.like]: '%' + name + '%'}
                  },
                  required: true
              }
          ]
      })
    
    
    
    

    【讨论】:

    • hmm... 是的,这有效.. 我不确定这是否可以用于复杂的嵌套查询。谢谢
    • const products = await series.getProducts //&lt;= get stuck here 您应该使用 for 循环调用此方法。 for (let i = 0; i
    猜你喜欢
    • 2014-10-02
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多