如何在node.js中的sequelize中的where子句中使用request.body数组

时间:2018-08-28 07:39:15

标签: node.js express sequelize.js

我想用sequelize从数据库中搜索多个元素。我在操作符中使用它。

当我在$ in中写入$时有效:[1,2]

但是当我在$ in:[req.body.regions]中写//时不起作用。如何将主体对象解析为数组。

Phones.findAll({
                attributes: ['id', 'enabled', 'color_id', 'sold', 'region_id'
                ],
                where: {
                    region_id: (req.body.region_id) ? { $in : [req.body.region_id]}: { $ne: null },
                    color_id: (req.body.color_id) ? { $in : [req.body.color_id]} : { $ne: null },
                    phone_model_id: (req.body.phone_model_id) ? { $in : [req.body.phone_model_id]} : { $ne: null },
                    enabled: 1,
                },

Postman example

2 个答案:

答案 0 :(得分:1)

解决方案:如我所见,请求是逗号分隔的,可以使用以下命令:

{ $in : req.body.region_id.split(",") }

好方法:它应该是regions[0], regions[1]或只是在邮递员api中重复相同的名字regions[],然后在代码中像这样使用它:

{ $in : req.body.regions }

第一种方法很容易在邮递员中进行测试,但是对于开发人员而言,第二种方法更优雅,更易于创建或维护数组,而不是用逗号分隔的字符串

答案 1 :(得分:0)

如果

req.body.regions

是使用此代码的数组:

$in: req.body.regions