我的postgres查询中有以下查询,
SELECT * FROM users WHERE phone ='081234568912' OR email = 'idafdsafsdfads@gmail.com';
现在我想使用sequelize查找数据
这是我的代码this.app('books').find({query:{phone:data.phone, email:data.email}, paginate:false})
它仅执行AND命令,而不执行OR
有人知道答案吗?
谢谢
答案 0 :(得分:0)
无论您是使用findAll / find查询还是进行批量更新/销毁,都可以传递where对象来过滤查询。
通常从attribute:value对中获取一个对象,其中value可以是相等匹配的原语或其他运算符的键对象。
还可以通过嵌套or和and运算符的集合来生成复杂的AND / OR条件。
似乎现在有另一种格式。只需输入逗号将被视为AND运算,您可以使用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/manual/tutorial/querying.html#where