查询错误?查找参数

Sequelize Wrong query? findargs

右图为MongoDB代码,左图为Sequelize代码。打印了console.log(findArgs),前端部分没有报错,但是findArgs不行。 findArgs是过滤部分。

Sequelize 代码不起作用。我觉得下划线部分是错误的,但我不知道。

它通过按键值响应后端路由器,但不响应UI。

MongoDB代码

router.post('/AllLists', (req, res) => {
   
  let limit = req.body.limit ? parseInt(req.body.limit) : 20;  
  let skip = req.body.skip ? parseInt(req.body.skip) : 0; 
  let findArgs = {};

  for(let key in req.body.filters) { 
    if (req.body.filters[key].length > 0) { // continet or price 
      console.log('key', key)
      findArgs[key] = req.body.filters[key];
      }
    }
    console.log(findArgs)
    
    Product.find(findArgs)
    .populate("writer") 
    .skip(skip) 
    .limit(limit) 
    .exec((err, productInfo) => {
      if(err) return res.status(400).json({ success: false, err })
    
      return res.status(200).json({
         success: true, productInfo,
      postSize: productInfo.length 
    }) 
  })
})

续集代码

router.post('/AllLists', async (req, res, next ) => {
    let limit = req.body.limit ? parseInt(req.body.limit) : 20;
    let skip = req.body.skip ? parseInt(req.body.skip) : 0; 
    let findArgs = {};

    for(let key in req.body.filters) {
        if(req.body.filters[key].length > 0) {
            findArgs[key] = req.body.filters[key];
        }
    }
    console.log('findArgs', findArgs);
    try {
        const productInfo = await Product.findAll({
            findArgs,
            limit: limit,
            offset: skip,
            include: [
                {
                    model: Image,
                    attributes: ['src']
                },
                
            ],
        });
        res.status(200).json({ success: true,  productInfo, postSize: productInfo.length});
    } catch (err) {
        console.error(err);
        next(err);
    }
})

输出到后端路由器。当键值被按下时

findArgs { Brand: [ 2 ] }

Sequelize 中的 findArgs 查询是否错误?

首先,您需要了解sequelize是ORM(Object Relational Mapping),它只用于关系数据库(MySQL、Postgres等)。

对于MongoDB是非关系数据库,可以使用mongoose ODM(Object Document Mapping)