Rollback to _start and _end query params and update README.md

This commit is contained in:
Typicode
2014-09-19 01:46:43 +02:00
parent 053484d072
commit aa0d2e320a
3 changed files with 29 additions and 16 deletions

View File

@ -128,7 +128,19 @@ PATCH /:resource/:id
DEL /:resource/:id
```
To slice resources, add `_start` and `_end` to query parameters.
To slice resources, add `_start` and `_end`.
```
GET /:resource?_start=&end=
GET /:resource?filter=&filter=&_start=&end=
GET /:parent/:parentId/:resource?_start=&end=
```
To make a full-text search on resources, add `q`.
```
GET /:resource?q=
```
For routes usage information, have a look at [JSONPlaceholder](https://github.com/typicode/jsonplaceholder) code examples.

View File

@ -13,8 +13,8 @@ routes.db = function(req, res, next) {
// GET /:resource?q=
// GET /:resource?attr=&attr=
// GET /:parent/:parentId/:resource?attr=&attr=
// GET /*?*&limit=
// GET /*?*&offset=&limit=
// GET /*?*&_end=
// GET /*?*&_start=&_end=
routes.list = function(req, res, next) {
// Filters list
@ -23,16 +23,17 @@ routes.list = function(req, res, next) {
// Result array
var array
// Remove offset and limit from req.query to avoid filtering using those
// Remove _start and _end from req.query to avoid filtering using those
// parameters
var offset = req.query.offset
var limit = req.query.limit
var _start = req.query._start
var _end = req.query._end
delete req.query.offset
delete req.query.limit
delete req.query._start
delete req.query._end
if (req.query.q) {
// Full-text search
var q = req.query.q.toLowerCase()
array = low(req.params.resource).where(function(obj) {
@ -67,14 +68,14 @@ routes.list = function(req, res, next) {
}
}
// Slicing result
if (limit) {
// Slice result
if (_end) {
res.setHeader('X-Total-Count', array.length)
res.setHeader('Access-Control-Expose-Headers', 'X-Total-Count')
offset = offset || 0
_start = _start || 0
array = array.slice(offset, limit)
array = array.slice(_start, _end)
}
res.jsonp(array)

View File

@ -79,10 +79,10 @@ describe('Server', function() {
})
})
describe('GET /:resource?limit=', function() {
describe('GET /:resource?_end=', function() {
it('should respond with a sliced array', function(done) {
request(server)
.get('/comments?limit=2')
.get('/comments?_end=2')
.expect('Content-Type', /json/)
.expect('x-total-count', low.db.comments.length.toString())
.expect('Access-Control-Expose-Headers', 'X-Total-Count')
@ -91,10 +91,10 @@ describe('Server', function() {
})
})
describe('GET /:resource?offset=&limit=', function() {
describe('GET /:resource?_start=&_end=', function() {
it('should respond with a sliced array', function(done) {
request(server)
.get('/comments?offset=1&limit=2')
.get('/comments?_start=1&_end=2')
.expect('Content-Type', /json/)
.expect('x-total-count', low.db.comments.length.toString())
.expect('Access-Control-Expose-Headers', 'X-Total-Count')