From 3584b3cb3342fb9214efb7449e3c0614a2405322 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Sat, 1 Oct 2016 10:52:03 -0400 Subject: [PATCH 1/2] Regression test for 2786 --- spec/ParseObject.spec.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/spec/ParseObject.spec.js b/spec/ParseObject.spec.js index 807b4b8dea..a8ae046eb4 100644 --- a/spec/ParseObject.spec.js +++ b/spec/ParseObject.spec.js @@ -1955,4 +1955,34 @@ describe('Parse.Object testing', () => { done(); }) }); + + it('should handle select and include #2786', (done) => { + let score = new Parse.Object("GameScore"); + let player = new Parse.Object("Player"); + score.set({ + "score": 1234 + }); + + score.save().then(() => { + player.set("gameScore", score); + player.set("other", "value"); + return player.save(); + }).then(() => { + let query = new Parse.Query("Player"); + query.include("gameScore"); + query.select("gameScore"); + return query.find(); + }).then((res) => { + let obj = res[0]; + let gameScore = obj.get("gameScore"); + let other = obj.get("other"); + expect(other).toBeUndefined(); + expect(gameScore).not.toBeUndefined(); + expect(gameScore.get("score")).toBe(1234); + done(); + }).catch(err => { + jfail(err); + done(); + }) + }); }); From 75275ac83fb0a18c2183200d6434b2a226496aa3 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Sat, 1 Oct 2016 11:14:52 -0400 Subject: [PATCH 2/2] Fix issue affecting selcting/including keys --- src/RestQuery.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/RestQuery.js b/src/RestQuery.js index ac3c985a0f..ecd9840fa3 100644 --- a/src/RestQuery.js +++ b/src/RestQuery.js @@ -488,7 +488,6 @@ function includePath(config, auth, response, path, restOptions = {}) { pointersHash[className].add(pointer.objectId); } } - let includeRestOptions = {}; if (restOptions.keys) { let keys = new Set(restOptions.keys.split(',')); @@ -500,10 +499,14 @@ function includePath(config, auth, response, path, restOptions = {}) { return set; } } - set.add(keyPath[i]); + if (i < keyPath.length) { + set.add(keyPath[i]); + } return set; }, new Set()); - includeRestOptions.keys = Array.from(keySet).join(','); + if (keySet.size > 0) { + includeRestOptions.keys = Array.from(keySet).join(','); + } } let queryPromises = Object.keys(pointersHash).map((className) => {