使用 $ 或 sequelize 的多个 where
Posted
技术标签:
【中文标题】使用 $ 或 sequelize 的多个 where【英文标题】:Multiple where with $or sequelize 【发布时间】:2020-05-31 21:02:46 【问题描述】:我尝试通过使用 where 子句和 $or in sequelize 提供的电子邮件来获取所有用户。
Where in sequelize
所以我从我的电子邮件数组中为多个这样的地方创建了查询:
[ email: 'email1@gmail.com' , email: 'email@gmail.com' ]
然后我尝试以多种方式获取它,例如:
const allExistedUsers = await User.findAll(
where: $or: multileWhere
);
根据post 和文档中的回答,它应该可以工作:
$and: ["Key1": "Value1", "Key2": "Value2"]
但它不起作用。我不知道该怎么做。
【问题讨论】:
【参考方案1】:您的电子邮件作为数组:
const mails = [ email: 'email1@gmail.com' , email: 'email@gmail.com' ];
const yourEmailsArray = mails.map( el => return el.email; );
然后您可以连接您的电子邮件。续集格式:
WHERE (`User`.`email` = 'email1@gmail.com' OR `User`.`email` = 'email2@gmail.com')
const allExistedUsers = await User.findAll(
where:
email: [Op.or]: [].concat(yourEmailsArray)
);
【讨论】:
【参考方案2】:我使用这篇文章中的另一种方法做到了 here
const allExistedUsers = await User.findAll(
where: email: [Op.or]: usersEmailsToAssign
);
usersEmailsToAssign 是一个带有字符串的数组
【讨论】:
以上是关于使用 $ 或 sequelize 的多个 where的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 sequelize-typescript 从单个字段中引用多个模型?
有没有办法使用 Sequelize 一次将多个嵌入式模型保存在数据库中
如何在 MySql 中使用 sequelize 运行多个原始查询?