使用 $ 或 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 类的多个实例

有没有办法使用 Sequelize 一次将多个嵌入式模型保存在数据库中

如何在 MySql 中使用 sequelize 运行多个原始查询?

如何使用 sequelize 在一个数据库请求中将数据插入多个表?

sequelize (js) 关联多个列与一个表