From 310dbfced9ffad722845de21f73c888ddaf54abb Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Sat, 15 Apr 2017 11:46:39 -0400 Subject: [PATCH 1/2] Transform array atoms on equality --- spec/ParseQuery.spec.js | 34 ++++++++++++++++++++ src/Adapters/Storage/Mongo/MongoTransform.js | 2 +- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/spec/ParseQuery.spec.js b/spec/ParseQuery.spec.js index 1cbe41dbec..6ae8a632be 100644 --- a/spec/ParseQuery.spec.js +++ b/spec/ParseQuery.spec.js @@ -2750,4 +2750,38 @@ describe('Parse.Query testing', () => { done(); }) }); + + it('should not depend on parameter order #3169', function(done) { + const score1 = new Parse.Object('Score', {scoreId: '1'}); + const score2 = new Parse.Object('Score', {scoreId: '2'}); + const game1 = new Parse.Object('Game', {gameId: '1'}); + const game2 = new Parse.Object('Game', {gameId: '2'}); + Parse.Object.saveAll([score1, score2, game1, game2]).then(() => { + game1.set('score', [score1]); + game2.set('score', [score2]); + return Parse.Object.saveAll([game1, game2]); + }).then(() => { + const where = { + score: { + objectId: score1.id, + className: 'Score', + __type: 'Pointer', + } + } + return require('request-promise').post({ + url: Parse.serverURL + "/classes/Game", + json: { where, "_method":"GET" }, + headers: { + 'X-Parse-Application-Id': Parse.applicationId, + 'X-Parse-Javascript-Key': Parse.javaScriptKey + } + }); + }).then((response) => { + expect(response.results.length).toBe(1); + done(); + }, (err) => { + console.error(err); + done.fail(); + }) + }); }); diff --git a/src/Adapters/Storage/Mongo/MongoTransform.js b/src/Adapters/Storage/Mongo/MongoTransform.js index 63647e0315..39f313240c 100644 --- a/src/Adapters/Storage/Mongo/MongoTransform.js +++ b/src/Adapters/Storage/Mongo/MongoTransform.js @@ -232,7 +232,7 @@ function transformQueryKeyValue(className, key, value, schema) { } if (expectedTypeIsArray && !(value instanceof Array)) { - return {key, value: { '$all' : [value] }}; + return {key, value: { '$all' : [transformInteriorAtom(value)] }}; } // Handle atomic values From 502c617ecc084bea395d806ba89ded9983e79af4 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Sat, 15 Apr 2017 13:26:03 -0400 Subject: [PATCH 2/2] nits --- spec/ParseQuery.spec.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/spec/ParseQuery.spec.js b/spec/ParseQuery.spec.js index 6ae8a632be..9d27f302ca 100644 --- a/spec/ParseQuery.spec.js +++ b/spec/ParseQuery.spec.js @@ -2770,7 +2770,7 @@ describe('Parse.Query testing', () => { } return require('request-promise').post({ url: Parse.serverURL + "/classes/Game", - json: { where, "_method":"GET" }, + json: { where, "_method": "GET" }, headers: { 'X-Parse-Application-Id': Parse.applicationId, 'X-Parse-Javascript-Key': Parse.javaScriptKey @@ -2779,9 +2779,6 @@ describe('Parse.Query testing', () => { }).then((response) => { expect(response.results.length).toBe(1); done(); - }, (err) => { - console.error(err); - done.fail(); - }) + }, done.fail); }); });