fix: Nested objects are encoded incorrectly for MongoDB (#8209)
BREAKING CHANGE: Nested objects are now properly stored in the database using JSON serialization; previously, due to a bug only top-level objects were serialized, but nested objects were saved as raw JSON; for example, a nested `Date` object was saved as a JSON object like `{ "__type": "Date", "iso": "2020-01-01T00:00:00.000Z" }` instead of its serialized representation `2020-01-01T00:00:00.000Z` (#8209)
This commit is contained in:
@@ -212,6 +212,44 @@ describe_only_db('mongo')('MongoStorageAdapter', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('handles nested dates', async () => {
|
||||
await new Parse.Object('MyClass', {
|
||||
foo: {
|
||||
test: {
|
||||
date: new Date(),
|
||||
},
|
||||
},
|
||||
bar: {
|
||||
date: new Date(),
|
||||
},
|
||||
date: new Date(),
|
||||
}).save();
|
||||
const adapter = Config.get(Parse.applicationId).database.adapter;
|
||||
const [object] = await adapter._rawFind('MyClass', {});
|
||||
expect(object.date instanceof Date).toBeTrue();
|
||||
expect(object.bar.date instanceof Date).toBeTrue();
|
||||
expect(object.foo.test.date instanceof Date).toBeTrue();
|
||||
});
|
||||
|
||||
it('handles nested dates in array ', async () => {
|
||||
await new Parse.Object('MyClass', {
|
||||
foo: {
|
||||
test: {
|
||||
date: [new Date()],
|
||||
},
|
||||
},
|
||||
bar: {
|
||||
date: [new Date()],
|
||||
},
|
||||
date: [new Date()],
|
||||
}).save();
|
||||
const adapter = Config.get(Parse.applicationId).database.adapter;
|
||||
const [object] = await adapter._rawFind('MyClass', {});
|
||||
expect(object.date[0] instanceof Date).toBeTrue();
|
||||
expect(object.bar.date[0] instanceof Date).toBeTrue();
|
||||
expect(object.foo.test.date[0] instanceof Date).toBeTrue();
|
||||
});
|
||||
|
||||
it('handles updating a single object with array, object date', done => {
|
||||
const adapter = new MongoStorageAdapter({ uri: databaseURI });
|
||||
|
||||
|
||||
Reference in New Issue
Block a user