续订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一个条件对象产生'或'条件?
似乎现在有另一种格式
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;