diff --git a/spec/RestQuery.spec.js b/spec/RestQuery.spec.js index 4655bca705..5635590e68 100644 --- a/spec/RestQuery.spec.js +++ b/spec/RestQuery.spec.js @@ -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(); + }); + }); + }); diff --git a/src/RestQuery.js b/src/RestQuery.js index 34201a06bd..7f707fc47d 100644 --- a/src/RestQuery.js +++ b/src/RestQuery.js @@ -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') { diff --git a/src/Routers/ClassesRouter.js b/src/Routers/ClassesRouter.js index fd90217bcf..9803858c7c 100644 --- a/src/Routers/ClassesRouter.js +++ b/src/Routers/ClassesRouter.js @@ -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);