Использование сочетания предложений AND и OR в парусах и ватерлинии

Как я могу использовать предложения OR и AND в Sailsjs и его ORM Waterline? Например, у меня есть стол с книгами

 _______________________________________
| book_name | author   | free  | public |  
 _______________________________________
| Book-A    | Author-1 | false | true   |
 ---------------------------------------
| Book-B    | Author-1 | true  | true   |
 ---------------------------------------
| Book-C    | Author-1 | false | false  |
 ---------------------------------------
| Book-D    | Author-2 | true  | true   |
 ---------------------------------------

Я хочу получить книги Автора-1, которые являются общедоступными или бесплатными, то есть Книга-А и Книга-Б. Как мне написать этот запрос с Sails.js


person Muhammad Raihan Muhaimin    schedule 16.04.2014    source источник
comment
Вы имеете в виду, где public или free есть true?   -  person sgress454    schedule 19.04.2014
comment
Да, Книга A, Книга B и Книга D - все они подходят для этого. Однако еще одно условие: автор должен быть автором 1, что не удалось для книги D. Таким образом, результатом должны быть книги A и книги B. В моем вопросе я напечатал это неправильно, я отредактировал это.   -  person Muhammad Raihan Muhaimin    schedule 19.04.2014


Ответы (2)


Следующий запрос также должен работать:

const books = yield Book.find().where({
  author: 'Author-1',
  or: [{
    free: true,
  }, {
    public: true,
  }],
});
person Jim Geurts    schedule 11.08.2016
comment
Что, если вы также хотите сделать or для Author-1 и Author-2? - person Ashish; 26.11.2017
comment
Массивы также действуют как операторы или, поэтому вы можете сделать: author: ['Author-1', 'Author-2'] в операторе where - person Jim Geurts; 27.11.2017

Для этого мы можем использовать API Waterline, где приведен пример.

Book.find().where(  { or : [ { free  : true }, {   public: true  } ] })
            .where( { author : "Author-1" }  )
            .exec( function (err, books) {
            //Books will be an array containing all the books that matches this criteria
            //Some code here
    }
person Muhammad Raihan Muhaimin    schedule 16.04.2014
comment
Привет, просто к вашему сведению, у меня не сработало несколько вариантов схемы ?where={...}&where={...} . Но решение Джима сработало. - person Gregory Kapustin; 04.11.2016