通过查询子表和主表从主表获取数据

时间:2020-07-02 18:36:02

标签: node.js sequelize.js

我的餐桌产品和子餐桌系列有太多的关联

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不是函数

1 个答案:

答案 0 :(得分:1)

怎么样

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