Skip to content

Commit 23cc573

Browse files
authored
fix: Pending updates to nested field causes ParseObject.toJSON() to return incorrect object (#1453)
1 parent 8b7fd1b commit 23cc573

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

integration/test/ParseObjectTest.js

+12
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,18 @@ describe('Parse Object', () => {
292292
assert.strictEqual(result.get('a').b.c.d, 2);
293293
});
294294

295+
it('can set nested fields without repeating pending operations on toJSON (regression test for #1452)', async () => {
296+
const a = new Parse.Object('MyObject');
297+
a.set('obj', {});
298+
await a.save();
299+
a.set('obj.a', 0);
300+
const json = a.toJSON();
301+
expect(json.obj).toEqual({ a: 0 });
302+
expect(new Set(Object.keys(json))).toEqual(
303+
new Set(['objectId', 'createdAt', 'updatedAt', 'obj'])
304+
);
305+
});
306+
295307
it('can increment nested field and retain full object', async () => {
296308
const obj = new Parse.Object('TestIncrementObject');
297309
obj.set('objectField', { number: 5, letter: 'a' });

src/ParseObject.js

-4
Original file line numberDiff line numberDiff line change
@@ -470,10 +470,6 @@ class ParseObject {
470470
json[attr] = encode(attrs[attr], false, false, seen, offline);
471471
}
472472
}
473-
const pending = this._getPendingOps();
474-
for (const attr in pending[0]) {
475-
json[attr] = pending[0][attr].toJSON(offline);
476-
}
477473

478474
if (this.id) {
479475
json.objectId = this.id;

src/__tests__/ParseObject-test.js

+8
Original file line numberDiff line numberDiff line change
@@ -667,6 +667,14 @@ describe('ParseObject', () => {
667667
'objectField.number': 20,
668668
otherField: { hello: 'world' },
669669
});
670+
expect(o.toJSON()).toEqual({
671+
objectField: {
672+
number: 20,
673+
letter: 'a',
674+
},
675+
otherField: { hello: 'world' },
676+
objectId: 'setNested',
677+
});
670678
});
671679

672680
it('can set multiple nested fields (regression test for #1450)', () => {

0 commit comments

Comments
 (0)