如何在Postgres中将OR条件转换为seqeuelize查询

时间:2019-01-30 07:16:29

标签: node.js postgresql sequelize.js

我的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

有人知道答案吗?

谢谢

1 个答案:

答案 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