1. ホーム
  2. node.js

[解決済み] OR条件オブジェクトの連続化

2023-03-04 21:53:37

質問

このようなオブジェクトを作成することで

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"

しかし、これはすべて「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/en/latest/docs/querying/#where