Adds limit = 0 as a valid parameter for queries (#1493)

* Remove results if limit = 0;

* Adds tests for limit=0 and count=1.

* Improves readability.
This commit is contained in:
Seiji Akiyama
2016-04-15 15:17:53 -03:00
committed by Drew
parent f076078bf1
commit a727e1ccd3
3 changed files with 34 additions and 1 deletions

View File

@@ -191,4 +191,33 @@ describe('rest query', () => {
});
});
it('query with limit = 0', (done) => {
rest.create(config, nobody, 'TestObject', {foo: 'baz'}
).then(() => {
return rest.create(config, nobody,
'TestObject', {foo: 'qux'});
}).then(() => {
return rest.find(config, nobody,
'TestObject', {}, {limit: 0});
}).then((response) => {
expect(response.results.length).toEqual(0);
done();
});
});
it('query with limit = 0 and count = 1', (done) => {
rest.create(config, nobody, 'TestObject', {foo: 'baz'}
).then(() => {
return rest.create(config, nobody,
'TestObject', {foo: 'qux'});
}).then(() => {
return rest.find(config, nobody,
'TestObject', {}, {limit: 0, count: 1});
}).then((response) => {
expect(response.results.length).toEqual(0);
expect(response.count).toEqual(2);
done();
});
});
});

View File

@@ -325,6 +325,10 @@ RestQuery.prototype.replaceDontSelect = function() {
// Returns a promise for whether it was successful.
// Populates this.response with an object that only has 'results'.
RestQuery.prototype.runFind = function() {
if (this.findOptions.limit === 0) {
this.response = {results: []};
return Promise.resolve();
}
return this.config.database.find(
this.className, this.restWhere, this.findOptions).then((results) => {
if (this.className === '_User') {

View File

@@ -23,7 +23,7 @@ export class ClassesRouter extends PromiseRouter {
if (body.skip) {
options.skip = Number(body.skip);
}
if (body.limit) {
if (body.limit || body.limit === 0) {
options.limit = Number(body.limit);
} else {
options.limit = Number(100);