fix: Nested date is incorrectly decoded as empty object {} when fetching a Parse Object (#8446)
This commit is contained in:
@@ -248,6 +248,10 @@ describe_only_db('mongo')('MongoStorageAdapter', () => {
|
|||||||
expect(object.date[0] instanceof Date).toBeTrue();
|
expect(object.date[0] instanceof Date).toBeTrue();
|
||||||
expect(object.bar.date[0] instanceof Date).toBeTrue();
|
expect(object.bar.date[0] instanceof Date).toBeTrue();
|
||||||
expect(object.foo.test.date[0] instanceof Date).toBeTrue();
|
expect(object.foo.test.date[0] instanceof Date).toBeTrue();
|
||||||
|
const obj = await new Parse.Query('MyClass').first({useMasterKey: true});
|
||||||
|
expect(obj.get('date')[0] instanceof Date).toBeTrue();
|
||||||
|
expect(obj.get('bar').date[0] instanceof Date).toBeTrue();
|
||||||
|
expect(obj.get('foo').test.date[0] instanceof Date).toBeTrue();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('handles updating a single object with array, object date', done => {
|
it('handles updating a single object with array, object date', done => {
|
||||||
|
|||||||
@@ -188,6 +188,16 @@ const transformInteriorValue = restValue => {
|
|||||||
// Handle atomic values
|
// Handle atomic values
|
||||||
var value = transformInteriorAtom(restValue);
|
var value = transformInteriorAtom(restValue);
|
||||||
if (value !== CannotTransform) {
|
if (value !== CannotTransform) {
|
||||||
|
if (value && typeof value === 'object') {
|
||||||
|
if (value instanceof Date) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
if (value instanceof Array) {
|
||||||
|
value = value.map(transformInteriorValue);
|
||||||
|
} else {
|
||||||
|
value = mapValues(value, transformInteriorValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1014,9 +1024,6 @@ function mapValues(object, iterator) {
|
|||||||
const result = {};
|
const result = {};
|
||||||
Object.keys(object).forEach(key => {
|
Object.keys(object).forEach(key => {
|
||||||
result[key] = iterator(object[key]);
|
result[key] = iterator(object[key]);
|
||||||
if (result[key] && JSON.stringify(result[key]).includes(`"__type"`)) {
|
|
||||||
result[key] = mapValues(object[key], iterator);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user