diff --git a/integration/test/ParseQueryTest.js b/integration/test/ParseQueryTest.js index 20c6ae81b..763021000 100644 --- a/integration/test/ParseQueryTest.js +++ b/integration/test/ParseQueryTest.js @@ -1018,6 +1018,50 @@ describe('Parse Query', () => { }); }); + it('can includeAll nested objects', async () => { + const child1 = new TestObject({ foo: 'bar' }); + const child2 = new TestObject({ foo: 'baz' }); + const child3 = new TestObject({ foo: 'bin' }); + const parent = new Parse.Object('Container'); + parent.set('child1', child1); + parent.set('child2', child2); + parent.set('child3', child3); + await Parse.Object.saveAll([child1, child2, child3, parent]); + + const query = new Parse.Query('Container'); + query.equalTo('objectId', parent.id); + query.includeAll(); + + const results = await query.find(); + + assert.equal(results.length, 1); + const parentAgain = results[0]; + assert.equal(parentAgain.get('child1').get('foo'), 'bar'); + assert.equal(parentAgain.get('child2').get('foo'), 'baz'); + assert.equal(parentAgain.get('child3').get('foo'), 'bin'); + }); + + it('can includeAll nested objects in .each', async () => { + const child1 = new TestObject({ foo: 'bar' }); + const child2 = new TestObject({ foo: 'baz' }); + const child3 = new TestObject({ foo: 'bin' }); + const parent = new Parse.Object('Container'); + parent.set('child1', child1); + parent.set('child2', child2); + parent.set('child3', child3); + await Parse.Object.saveAll([child1, child2, child3, parent]); + + const query = new Parse.Query('Container'); + query.equalTo('objectId', parent.id); + query.includeAll(); + + await query.each((obj) => { + assert.equal(obj.get('child1').get('foo'), 'bar'); + assert.equal(obj.get('child2').get('foo'), 'baz'); + assert.equal(obj.get('child3').get('foo'), 'bin'); + }); + }); + it('can include nested objects via array', (done) => { let child = new TestObject(); let parent = new Parse.Object('Container'); diff --git a/src/ParseQuery.js b/src/ParseQuery.js index 91d0b6b75..af74aedc7 100644 --- a/src/ParseQuery.js +++ b/src/ParseQuery.js @@ -345,9 +345,11 @@ class ParseQuery { this._order = json.order.split(","); } - for (let key in json) if (json.hasOwnProperty(key)) { - if (["where", "include", "keys", "limit", "skip", "order"].indexOf(key) === -1) { - this._extraOptions[key] = json[key]; + for (let key in json) { + if (json.hasOwnProperty(key)) { + if (["where", "include", "keys", "limit", "skip", "order"].indexOf(key) === -1) { + this._extraOptions[key] = json[key]; + } } } @@ -1313,6 +1315,11 @@ class ParseQuery { /** * Includes nested Parse.Objects for the provided key. You can use dot * notation to specify which fields in the included object are also fetched. + * + * You can include all nested Parse.Objects by passing in '*'. + * Requires Parse Server 3.0.0+ + *
query.include('*');+ * * @param {...String|Array