web-dev-qa-db-ja.com

ウォーターラインORM(sails.js)クエリの「whereor」

喫水線クエリに「OR」条件を追加する方法を教えてください。次のようになります。

User.find().where({

    score: { '>': req.params.score},
    status: 'user'
    OR
    status: 'admin'


}).exec(function(err, data){
    ...
});

したがって、2つの条件があります。

1)スコア>特定の数

そして2)ステータス=ユーザー

OR

1)ステータス=管理者。

13
Igor

帆が使用する開発データベース(waterline-criteria)には issue がありました。問題は、sails-diskで文字列と整数が処理される方法でした。以下のクエリ条件では、theScoreは文字列として扱われていました。これは解決されたので、sails-diskを更新する必要があります。これは、npm install sails-disk --force --saveを使用して行うことができます。その後、以下の例は正常に機能するはずです。

あなたはこれを試すことができます(更新)

    foo: function(req, res, next) {

    var theScore = req.param('id') || 0;

    User.find().where({

        or: [{

        score: {
            '>': parseInt(theScore),
        },

        status: 'user'
        },

      {  status: 'admin'}]

    }).exec(function(err, data) {
        if (err) return next(err);
        res.json(data);
    });
},
27
JohnGalt
let userResult=await User.find().where({
score: { '>': parseInt(req.params.score)},
or: [{ status: 'user'},{status: 'admin'}]})
0
Garach Ankur