如何在nodejs中使用sequelize在where子句中使用和运算符

时间:2018-10-16 06:01:18

标签: node.js sequelize.js

我想从数据库中搜索一些行。

Phones.findAndCountAll({
        where: {
            id: (req.body.id) ?  req.body.id : { $ne: null },
            description: (req.body.description) ? { $like: '%' + req.body.description.trim() + '%' } : { $ne: null },
            price: {
                $and: {
                  {(req.body.st_price) ? {$gte: req.body.st_price}  : { $ne: null } },
                  {(req.body.en_price) ? {$lte: req.body.en_price}  : { $ne: null } },
                }
            }
        }
    })

但是当我运行它时,它不起作用。我是否要搜索request.body。存在。我应该使用介于运算符吗? 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我认为,您应该先构建查询,然后在sequelize中使用它:

let price_conditions = {};
if(req.body.st_price){
    price_conditions['$gte'] = req.body.st_price;
}
if(req.body.en_price){
    price_conditions['$lte'] = req.body.st_price;
}
price_conditions['$ne'] = null;

Phones.findAndCountAll({
    where: {
        id: (req.body.id) ?  req.body.id : { $ne: null },
        description: (req.body.description) ? { $like: '%' + req.body.description.trim() + '%' } : { $ne: null },
        price : price_conditions
    }
})

有关详细信息: DO READ