2013-12-13 15 views
12

Tôi muốn biết cách thêm điều kiện "OR" trong truy vấn đường nước. nên trông giống như:Đường nước ORM (sails.js) "ở đâu hoặc" trong truy vấn

User.find().where({ 

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


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

Vì vậy, chúng tôi có 2 điều kiện:

1) Điểm> số cụ thể

Và 2) Tình trạng = user

HOẶC

1) Trạng thái = admin.

Trả lời

24

Có một issue với cơ sở dữ liệu phát triển được sử dụng bởi buồm (tiêu chuẩn đường nước). Vấn đề là cách chuỗi và số nguyên được xử lý trong đĩa-sails. Trong tiêu chí truy vấn bên dưới, theScore, đang được coi là một chuỗi. Điều này đã được giải quyết, vì vậy bạn chỉ cần cập nhật sails-disk. Bạn có thể làm điều này bằng cách sử dụng npm install sails-disk --force --save. Sau đó ví dụ dưới đây sẽ hoạt động tốt.

Bạn có thể thử này (Cập nhật):

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

Cảm ơn bạn, nhưng không phải là chính xác những gì tôi cần. Vì vậy, đối với admin tôi không cần phải kiểm tra scrope. (Vì vậy, đối với quản trị viên, chúng tôi có thể có bất kỳ điểm số nào, nhưng đối với người dùng nhiều hơn param) – Igor

+0

@ user2659879, tôi nghĩ rằng chỉnh sửa của tôi sẽ trả lời và giải quyết vấn đề của bạn. – JohnGalt

Các vấn đề liên quan