diff --git a/spec/ParseQuery.spec.js b/spec/ParseQuery.spec.js index 206fe7f6..4537a073 100644 --- a/spec/ParseQuery.spec.js +++ b/spec/ParseQuery.spec.js @@ -1492,7 +1492,52 @@ describe('Parse.Query testing', () => { fail('should not fail'); done(); }) - }) + }); + + it('properly nested array of mixed objects with bad ids', (done) => { + let objects = []; + let total = 0; + while(objects.length != 5) { + let object = new Parse.Object('AnObject'); + object.set('key', objects.length); + objects.push(object); + } + while(objects.length != 10) { + let object = new Parse.Object('AnotherObject'); + object.set('key', objects.length); + objects.push(object); + } + Parse.Object.saveAll(objects).then(() => { + let object = new Parse.Object("AContainer"); + for (var i=0; i { + let query = new Parse.Query('AContainer'); + query.include('objects'); + return query.find() + }).then((results) => { + expect(results.length).toBe(1); + let res = results[0]; + let objects = res.get('objects'); + expect(objects.length).toBe(5); + objects.forEach((object) => { + total -= object.get('key'); + }); + expect(total).toBe(0); + done() + }, (err) => { + console.error(err); + fail('should not fail'); + done(); + }) + }); it('properly fetches nested pointers', (done) =>  { let color = new Parse.Object('Color'); diff --git a/src/RestQuery.js b/src/RestQuery.js index f2636b54..e825a544 100644 --- a/src/RestQuery.js +++ b/src/RestQuery.js @@ -537,7 +537,8 @@ function findPointers(object, path) { // pointers inflated. function replacePointers(object, path, replace) { if (object instanceof Array) { - return object.map((obj) => replacePointers(obj, path, replace)); + return object.map((obj) => replacePointers(obj, path, replace)) + .filter((obj) => obj != null && obj != undefined); } if (typeof object !== 'object') {