fix: afterSave trigger removes pointer in Parse object (#7913)
This commit is contained in:
@@ -15,6 +15,7 @@ var ClientSDK = require('./ClientSDK');
|
||||
import RestQuery from './RestQuery';
|
||||
import _ from 'lodash';
|
||||
import logger from './logger';
|
||||
import { requiredColumns } from './Controllers/SchemaController';
|
||||
|
||||
// query and data are both provided in REST API format. So data
|
||||
// types are encoded by plain old objects.
|
||||
@@ -1556,7 +1557,7 @@ RestWrite.prototype.runAfterSaveTrigger = function () {
|
||||
this.response.response = result;
|
||||
} else {
|
||||
this.response.response = this._updateResponseWithData(
|
||||
(result || updatedObject)._toFullJSON(),
|
||||
(result || updatedObject).toJSON(),
|
||||
this.data
|
||||
);
|
||||
}
|
||||
@@ -1665,6 +1666,21 @@ RestWrite.prototype._updateResponseWithData = function (response, data) {
|
||||
this.storage.fieldsChangedByTrigger.push(key);
|
||||
}
|
||||
}
|
||||
const skipKeys = [
|
||||
'objectId',
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
...(requiredColumns.read[this.className] || []),
|
||||
];
|
||||
for (const key in response) {
|
||||
if (skipKeys.includes(key)) {
|
||||
continue;
|
||||
}
|
||||
const value = response[key];
|
||||
if (value == null || (value.__type && value.__type === 'Pointer') || data[key] === value) {
|
||||
delete response[key];
|
||||
}
|
||||
}
|
||||
if (_.isEmpty(this.storage.fieldsChangedByTrigger)) {
|
||||
return response;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user