2013-12-13 1 views
12

물줄기 쿼리에서 "OR"조건을 추가하는 방법을 알고 싶습니다. 워터 라인 ORM (sails.js) "where 또는"쿼리에서

User.find().where({ 

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


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

그래서 우리는이 조건이 :처럼 보일해야

1) 점수> 특정 수의

그리고 2) 상태 = 사용자

또는

1

) 상태 = admin.

답변

24

돛 (수위 기준)에 사용 된 개발 데이터베이스가있는 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); 
    }); 
}, 
+0

감사합니다 당신을,하지만 난 필요가 정확히 :

는이 (업데이트) 시도 할 수 있습니다. 관리자에게는 scrope을 확인할 필요가 없습니다. (따라서 관리자는 우리가 점수를 가질 수 있지만, 사용자가 param보다 많음) – Igor

+0

@ user2659879, 내 편집이 문제를 해결해야한다고 생각합니다. – JohnGalt