续订OR条件对象

通过创build这样的对象

var condition= { where: { LastName:"Doe", FirstName:["John","Jane"], Age:{ gt:18 } } } 

并通过它

 Student.findAll(condition) .success(function(students){ }) 

它可以像这样精美地生成SQL

 "SELECT * FROM Student WHERE LastName='Doe' AND FirstName in ("John","Jane") AND Age>18" 

但是,这是所有'和'的条件,我怎么能通过创build一个条件对象产生'或'条件?

       

网上收集的解决方案 "续订OR条件对象"

似乎现在有另一种格式

 where: { LastName: "Doe", $or: [ { FirstName: { $eq: "John" } }, { FirstName: { $eq: "Jane" } }, { Age: { $gt: 18 } } ] } 

会产生

 WHERE LastName='Doe' AND (FirstName = 'John' OR FirstName = 'Jane' OR Age > 18) 

请参阅文档: http : //docs.sequelizejs.com/en/latest/docs/querying/#where

使用Sequelize.or

 var condition = { where: Sequelize.and( { name: 'a project' }, Sequelize.or( { id: [1,2,3] }, { id: { lt: 10 } } ) ) }; 

参考 (searchSequelize.or

编辑:此外,这已被修改,并为最新的方法看到Morio的答案 ,

查看关于查询的文档 。

这将是:

 $or: [{a: 5}, {a: 6}] // (a = 5 OR a = 6) 

将来会弃用基于string的操作符(您可能在控制台中看到了警告)。

使用符号运算符来处理这个问题对我来说是相当混乱的,我已经用两个例子更新了文档 。

 Post.findAll({ where: { [Op.or]: [{authorId: 12}, {authorId: 13}] } }); // SELECT * FROM post WHERE authorId = 12 OR authorId = 13; Post.findAll({ where: { authorId: { [Op.or]: [12, 13] } } }); // SELECT * FROM post WHERE authorId = 12 OR authorId = 13;