ORM ватерлинии (sails.js) где или в запросе

Я хотел бы знать, как добавить условие «ИЛИ» в запрос ватерлинии. Должно выглядеть так:

User.find().where({

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


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

Итак, у нас есть 2 условия:

1) Оценка > конкретное число

И 2) статус = пользователь

OR

1) Статус = админ.


person Igor    schedule 13.12.2013    source источник


Ответы (1)


Возникла проблема с базой данных разработки, используемой парусами (ватерлиния-критерии). Проблема заключалась в том, как строки и целые числа обрабатывались в Sails-Disk. В приведенных ниже критериях запроса theScore обрабатывался как строка. Это было решено, поэтому вам просто нужно обновить паруса-диск. Вы можете сделать это, используя 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);
    });
},
person JohnGalt    schedule 13.12.2013
comment
Спасибо, но не совсем то, что мне нужно. Так что для администратора мне не нужно проверять масштаб. (Таким образом, для админа мы можем иметь любую оценку, но для пользователя больше, чем параметр) - person Igor; 16.12.2013
comment
@ user2659879, я думаю, что мое редактирование должно ответить на вашу проблему и решить ее. - person JohnGalt; 18.12.2013