如何在Sequelize中使用$and实现多参数全匹配查询?
在Sequelize中用$and实现多条件精准匹配
嘿,其实你当前的代码已经在做同时匹配三个ID才返回结果的操作啦!Sequelize默认会把query里的多个查询条件用AND逻辑组合起来,不过如果你想显式用$and(或者新版本的Op.and)来明确这个逻辑,我给你两种写法参考:
情况1:使用Sequelize v5及以上版本(推荐)
新版本的Sequelize已经改用Op操作符来定义逻辑关系了,步骤如下:
- 先导入
Op:
const { Op } = require('sequelize');
- 修改你的查询代码(如果是FeathersJS这类框架,保持
query字段;原生Sequelize用where字段):
const Request = await context.service.Model.findOne({ query: { [Op.and]: [ { formId: 2 }, { respondentId: 252 }, { recipientId: 197 } ] } });
情况2:使用Sequelize v4及更早版本
旧版本支持直接用$and关键字,写法更直观:
const Request = await context.service.Model.findOne({ query: { $and: [ { formId: 2 }, { respondentId: 252 }, { recipientId: 197 } ] } });
小补充
其实你原来的代码{ query: { formId: 2, respondentId: 252, recipientId: 197 } }和上面两种写法的效果完全一样,因为Sequelize默认会把多个平级的查询条件自动用AND逻辑关联。显式写$and/Op.and主要是为了代码可读性更强,或者在复杂查询场景(比如混合AND和OR逻辑)下明确逻辑关系。
内容的提问来源于stack exchange,提问作者user13094449
相关产品推荐
相关产品推荐

