Skip to content

Commit 6979bb4

Browse files
authored
Properly handle select/include pairs #2786 (#2809)
* Regression test for 2786 * Fix issue affecting selcting/including keys
1 parent d8f0f9e commit 6979bb4

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

spec/ParseObject.spec.js

+30
Original file line numberDiff line numberDiff line change
@@ -1955,4 +1955,34 @@ describe('Parse.Object testing', () => {
19551955
done();
19561956
})
19571957
});
1958+
1959+
it('should handle select and include #2786', (done) => {
1960+
let score = new Parse.Object("GameScore");
1961+
let player = new Parse.Object("Player");
1962+
score.set({
1963+
"score": 1234
1964+
});
1965+
1966+
score.save().then(() => {
1967+
player.set("gameScore", score);
1968+
player.set("other", "value");
1969+
return player.save();
1970+
}).then(() => {
1971+
let query = new Parse.Query("Player");
1972+
query.include("gameScore");
1973+
query.select("gameScore");
1974+
return query.find();
1975+
}).then((res) => {
1976+
let obj = res[0];
1977+
let gameScore = obj.get("gameScore");
1978+
let other = obj.get("other");
1979+
expect(other).toBeUndefined();
1980+
expect(gameScore).not.toBeUndefined();
1981+
expect(gameScore.get("score")).toBe(1234);
1982+
done();
1983+
}).catch(err => {
1984+
jfail(err);
1985+
done();
1986+
})
1987+
});
19581988
});

src/RestQuery.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,6 @@ function includePath(config, auth, response, path, restOptions = {}) {
488488
pointersHash[className].add(pointer.objectId);
489489
}
490490
}
491-
492491
let includeRestOptions = {};
493492
if (restOptions.keys) {
494493
let keys = new Set(restOptions.keys.split(','));
@@ -500,10 +499,14 @@ function includePath(config, auth, response, path, restOptions = {}) {
500499
return set;
501500
}
502501
}
503-
set.add(keyPath[i]);
502+
if (i < keyPath.length) {
503+
set.add(keyPath[i]);
504+
}
504505
return set;
505506
}, new Set());
506-
includeRestOptions.keys = Array.from(keySet).join(',');
507+
if (keySet.size > 0) {
508+
includeRestOptions.keys = Array.from(keySet).join(',');
509+
}
507510
}
508511

509512
let queryPromises = Object.keys(pointersHash).map((className) => {

0 commit comments

Comments
 (0)