2013-12-13 7 views
12

Vorrei sapere come aggiungere la condizione "OR" nella query sulla linea di galleggiamento. dovrebbe essere simile:Waterline ORM (sails.js) "dove o" nella query

User.find().where({ 

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


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

Così abbiamo 2 condizioni:

1) Punteggio ottenuto> numero specifico

E di stato 2) = utente

O

1) Stato = admin.

risposta

24

C'era un issue con il database di sviluppo utilizzato dalle vele (criteri della linea di galleggiamento). Il problema era il modo in cui le stringhe e gli interi venivano gestiti nel disco delle vele. Nel criterio di ricerca seguente, theScore, veniva trattato come una stringa. Questo è stato risolto, quindi è sufficiente aggiornare il disco delle vele. È possibile farlo utilizzando npm install sails-disk --force --save. Dopo che l'esempio qui sotto dovrebbe funzionare bene.

si può provare questo (Aggiornato):

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

Grazie voi, ma non è esattamente quello che mi serve. Quindi per l'amministratore non ho bisogno di controllare scrope. (Quindi per l'amministratore possiamo avere qualsiasi punteggio, ma per l'utente più di param) – Igor

+0

@ user2659879, penso che la mia modifica dovrebbe rispondere e risolvere il problema. – JohnGalt