Fixed a bug affecting updates to nested pointers (#7392)
* Fixed a bug affecting updates to nested pointers Also created unit tests * Marked the regression test for #7391 as pending for postgre The issue is not fixed yet Use cont instead of var
This commit is contained in:
committed by
GitHub
parent
8099cb05a4
commit
5e7c9d2e1a
@@ -99,7 +99,10 @@ const transformKeyValueForUpdate = (className, restKey, restValue, parseFormatSc
|
||||
|
||||
if (
|
||||
(parseFormatSchema.fields[key] && parseFormatSchema.fields[key].type === 'Pointer') ||
|
||||
(!parseFormatSchema.fields[key] && restValue && restValue.__type == 'Pointer')
|
||||
(!key.includes('.') &&
|
||||
!parseFormatSchema.fields[key] &&
|
||||
restValue &&
|
||||
restValue.__type == 'Pointer') // Do not use the _p_ prefix for pointers inside nested documents
|
||||
) {
|
||||
key = '_p_' + key;
|
||||
}
|
||||
@@ -305,7 +308,10 @@ function transformQueryKeyValue(className, key, value, schema, count = false) {
|
||||
schema && schema.fields[key] && schema.fields[key].type === 'Pointer';
|
||||
|
||||
const field = schema && schema.fields[key];
|
||||
if (expectedTypeIsPointer || (!schema && value && value.__type === 'Pointer')) {
|
||||
if (
|
||||
expectedTypeIsPointer ||
|
||||
(!schema && !key.includes('.') && value && value.__type === 'Pointer')
|
||||
) {
|
||||
key = '_p_' + key;
|
||||
}
|
||||
|
||||
@@ -326,8 +332,11 @@ function transformQueryKeyValue(className, key, value, schema, count = false) {
|
||||
}
|
||||
|
||||
// Handle atomic values
|
||||
if (transformTopLevelAtom(value) !== CannotTransform) {
|
||||
return { key, value: transformTopLevelAtom(value) };
|
||||
const transformRes = key.includes('.')
|
||||
? transformInteriorAtom(value)
|
||||
: transformTopLevelAtom(value);
|
||||
if (transformRes !== CannotTransform) {
|
||||
return { key, value: transformRes };
|
||||
} else {
|
||||
throw new Parse.Error(
|
||||
Parse.Error.INVALID_JSON,
|
||||
|
||||
Reference in New Issue
Block a user