fix: updating object includes unchanged keys in client response for certain key types (#8159)
This commit is contained in:
@@ -12,6 +12,7 @@ var passwordCrypto = require('./password');
|
||||
var Parse = require('parse/node');
|
||||
var triggers = require('./triggers');
|
||||
var ClientSDK = require('./ClientSDK');
|
||||
const util = require('util');
|
||||
import RestQuery from './RestQuery';
|
||||
import _ from 'lodash';
|
||||
import logger from './logger';
|
||||
@@ -1677,18 +1678,24 @@ RestWrite.prototype._updateResponseWithData = function (response, data) {
|
||||
this.storage.fieldsChangedByTrigger.push(key);
|
||||
}
|
||||
}
|
||||
const skipKeys = [
|
||||
'objectId',
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
...(requiredColumns.read[this.className] || []),
|
||||
];
|
||||
const skipKeys = [...(requiredColumns.read[this.className] || [])];
|
||||
if (!this.query) {
|
||||
skipKeys.push('objectId', 'createdAt');
|
||||
} else {
|
||||
skipKeys.push('updatedAt');
|
||||
delete response.objectId;
|
||||
}
|
||||
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) {
|
||||
if (
|
||||
value == null ||
|
||||
(value.__type && value.__type === 'Pointer') ||
|
||||
util.isDeepStrictEqual(data[key], value) ||
|
||||
util.isDeepStrictEqual((this.originalData || {})[key], value)
|
||||
) {
|
||||
delete response[key];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user