是否所有这些正确的方式都使用OR运算符?

时间:2018-10-01 00:44:09

标签: node.js postgresql sequelize.js

我已经看到人们使用OR运算符的三种方式...

where: { $or : [ {attr:val}, {attr:val}] } 

-

where: { $or : { attr:val, attr:val} } 

-

where: { attr: { $or: [val, val] } }

所有这些有效吗?还有任何陷阱?

1 个答案:

答案 0 :(得分:1)

我可能错了,不打算投票。

使用official documentation中的示例更好。

并启用logging mode (see logging param)以查看特定查询会发生什么情况


但是我会尝试给出一些想法。

我更喜欢这个-因为它更具可读性:

where: { $or : [ {attr:val1, some: val3}, {attr:val2} ] } 

... WHERE ((attr = val1 AND some = val3) OR (attr = val2))


我无法确定比较哪个值。由于它不是数组,因此我可能会猜测它将使用最后一个定义,并且由于没有其他字段来构建查询,因此它不会使用OR

where: { $or : { attr: val1, attr: val2} } 

... WHERE attr = val2   

额外:

where: { 
  user_id: 5, 
  $or : { attr: val1, attr: val2} 
} 

... WHERE user_id = 5 OR attr = val2  


第三者有点含糊,我建议使用$in

where: { attr: { $in: [val1, val2] } }

... WHERE attr IN (val1, val2)