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

标签 node.js express sequelize.js

我想用 sequelize 从数据库中搜索多个元素。我正在使用 in 运算符来使用它。

当我写 $in 时它有效:[1,2]

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

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

最佳答案

解决方案 :正如我所看到的请求是逗号分隔的,您可以使用以下一个:

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

的好方法:它应该是 regions[0], regions[1] 或者只是在您的 postman api 中重复相同的名称 regions[] ,然后在您的代码中使用它,例如:
{ $in : req.body.regions }

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

关于node.js - 如何在nodejs中使用sequelize在where子句中使用request.body数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52052527/

相关文章:

graphql - 是否可以使用 GraphQLList 从多个表中获取数据

node.js - 你如何在redis中使用lua将可用结果返回给nodejs

node.js - 如何告诉 webpack 忽略 Node 模块,包括核心模块和从 npm 安装的模块?

node.js - 通过 Node js Express 访问 AWS S3 签名 URL

postgresql - ORM/查询生成器库连接池大小和 pgbouncer 连接池大小有什么区别?

javascript - 如何在 Sequelize 中创建准备好的语句?

javascript - Angular js : an arrray from one file to another

node.js - Node.js 上的 SCTP

javascript - 如何显式查询一个字段并得到所有可能的结果?蒙戈

javascript - 如何在nodejs typescript 中设置变量