diff --git a/integration/test/ParseQueryTest.js b/integration/test/ParseQueryTest.js index 5da39bba2..18891517b 100644 --- a/integration/test/ParseQueryTest.js +++ b/integration/test/ParseQueryTest.js @@ -1621,6 +1621,23 @@ describe('Parse Query', () => { assert.equal(result.get('slice'), 'pizza'); }); + it('can exclude keys in findAll', async () => { + const object = new TestObject({ + hello: 'world', + foo: 'bar', + slice: 'pizza', + }); + await object.save(); + + const query = new Parse.Query(TestObject); + query.exclude('foo'); + query.equalTo('objectId', object.id); + const [result] = await query.findAll(); + assert.equal(result.get('foo'), undefined); + assert.equal(result.get('hello'), 'world'); + assert.equal(result.get('slice'), 'pizza'); + }); + it('uses subclasses when creating objects', done => { const ParentObject = Parse.Object.extend({ className: 'ParentObject' }); let ChildObject = Parse.Object.extend('ChildObject', { diff --git a/src/ParseQuery.js b/src/ParseQuery.js index f2e18b4d0..9be6b37a9 100644 --- a/src/ParseQuery.js +++ b/src/ParseQuery.js @@ -948,13 +948,10 @@ class ParseQuery { const query = new ParseQuery(this.className); query._limit = options.batchSize || 100; - query._include = this._include.map(i => { - return i; - }); + query._include = [...this._include]; + query._exclude = [...this._exclude]; if (this._select) { - query._select = this._select.map(s => { - return s; - }); + query._select = [...this._select]; } query._hint = this._hint; query._where = {}; diff --git a/src/__tests__/ParseQuery-test.js b/src/__tests__/ParseQuery-test.js index 4499b27fa..ba75357ed 100644 --- a/src/__tests__/ParseQuery-test.js +++ b/src/__tests__/ParseQuery-test.js @@ -1814,6 +1814,7 @@ describe('ParseQuery', () => { q.select('size', 'name'); q.includeAll(); q.hint('_id_'); + q.exclude('foo') await q.findAll(); expect(findMock).toHaveBeenCalledTimes(1); @@ -1824,6 +1825,7 @@ describe('ParseQuery', () => { order: 'objectId', keys: 'size,name', include: '*', + excludeKeys: 'foo', hint: '_id_', where: { size: {