From 4ff52de01ccd16c57f8b1255299d5a7d3d272ecc Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Thu, 24 Mar 2016 20:42:06 -0400 Subject: [PATCH] fixes problem affecting finding array pointers --- spec/ParseQuery.spec.js | 39 +++++++++++++++++++++++++++++++++++++++ src/transform.js | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/spec/ParseQuery.spec.js b/spec/ParseQuery.spec.js index 2c5cb5d4..70d14aff 100644 --- a/spec/ParseQuery.spec.js +++ b/spec/ParseQuery.spec.js @@ -2170,4 +2170,43 @@ describe('Parse.Query testing', () => { }); + it('should find objects with array of pointers', (done) => { + var objects = []; + while(objects.length != 5) { + var object = new Parse.Object('ContainedObject'); + object.set('index', objects.length); + objects.push(object); + } + + Parse.Object.saveAll(objects).then((objects) => { + var container = new Parse.Object('Container'); + var pointers = objects.map((obj) => { + return { + __type: 'Pointer', + className: 'ContainedObject', + objectId: obj.id + } + }) + container.set('objects', pointers); + let container2 = new Parse.Object('Container'); + container2.set('objects', pointers.slice(2, 3)); + return Parse.Object.saveAll([container, container2]); + }).then(() => { + let inQuery = new Parse.Query('ContainedObject'); + inQuery.greaterThanOrEqualTo('index', 1); + let query = new Parse.Query('Container'); + query.matchesQuery('objects', inQuery); + return query.find(); + }).then((results) => { + if (results) { + expect(results.length).toBe(2); + } + done(); + }).fail((err) => { + console.error(err); + fail('should not fail'); + done(); + }) + }) + }); diff --git a/src/transform.js b/src/transform.js index d6be5375..34d8a278 100644 --- a/src/transform.js +++ b/src/transform.js @@ -452,7 +452,7 @@ function transformConstraint(constraint, inArray) { 'bad ' + key + ' value'); } answer[key] = arr.map((v) => { - return transformAtom(v, true); + return transformAtom(v, true, { inArray: inArray }); }); break;