Sails Hook Query Builder
Query builder adds a static method to all models in a sails app that allows creates a query which will paginate, search and sort.
To use
- Add "sails-hook-cws-query-builder" to package.json of project. Sails will automatically pick this up when invoking.
- Add searchable parameter to models e.g. in models/Log.js
moduleexports = connection: 'mongo' tableName: 'log' searchable: 'level''message''meta.auditFlag' attributes: message: type: 'string' level: type: 'string' meta: type: 'json' ;
Build query
This will allow queries to be built with:
var query = Log; //Expected query items are search, limit, skip and sort.//**CustomQuery** are queries not associated with search, pagination or sort
if req url was:
/log?search=smith&limit=1&sort=user
then the returned query object would be:
where : or : message : contains : 'smith' level : contains : 'smith' metaauditFlag : contains : 'smith' limit: 1 sort: 'user'
Search via waterline from query
return Log;
will return:
count: 2 data: level: 'info' message: 'New message' meta: message: 'Resolver' level: 'error' message: 'Second message' meta: message: 'Incorrect'
Native request queries
- ?sort=name will sort against any property
- ?search=message:smith will search against a single property and value (delimited by :)
- ?search=smith will search against any property
- ?limit=10 will limit the results returned
- ?skip=20 will skip a defined number of results (used in pagination)