Using mix of AND and OR clause in sails and waterl

2020-03-26 03:59发布

How can I use OR and AND clause in Sailsjs and its ORM Waterline? For example I have a table of books

 _______________________________________
| 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   |
 ---------------------------------------

I want to get Books by Author-1 which are either public or free, which is Book-A and Book-B. How do I write this query with Sails.js

3条回答
beautiful°
2楼-- · 2020-03-26 04:26
  let booksResult=await Book.find().
                        where({author: "Author-1", 
                           or: [{ free: true  }, { public: true  }]
                        });

查看更多
走好不送
3楼-- · 2020-03-26 04:28

The following query should also work:

const books = yield Book.find().where({
  author: 'Author-1',
  or: [{
    free: true,
  }, {
    public: true,
  }],
});
查看更多
够拽才男人
4楼-- · 2020-03-26 04:30

For doing so we can use the where api of Waterline, following is an example

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
    }
查看更多
登录 后发表回答