fix: ensures old data from arrays is not persisted
This commit is contained in:
14
src/fields/hooks/beforeChange/getExistingRowDoc.ts
Normal file
14
src/fields/hooks/beforeChange/getExistingRowDoc.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* If there is an incoming row id,
|
||||
* and it matches the existing sibling doc id,
|
||||
* this is an existing row, so it should be merged.
|
||||
* Otherwise, return an empty object.
|
||||
*/
|
||||
|
||||
export const getExistingRowDoc = (incomingRow: Record<string, unknown>, existingRow?: Record<string, unknown>): Record<string, unknown> => {
|
||||
if (incomingRow.id && incomingRow.id === existingRow?.id) {
|
||||
return existingRow;
|
||||
}
|
||||
|
||||
return {};
|
||||
};
|
||||
@@ -5,6 +5,7 @@ import { Operation } from '../../../types';
|
||||
import { PayloadRequest } from '../../../express/types';
|
||||
import getValueWithDefault from '../../getDefaultValue';
|
||||
import { traverseFields } from './traverseFields';
|
||||
import { getExistingRowDoc } from './getExistingRowDoc';
|
||||
|
||||
type Args = {
|
||||
data: Record<string, unknown>
|
||||
@@ -217,8 +218,8 @@ export const promise = async ({
|
||||
promises,
|
||||
req,
|
||||
siblingData: row,
|
||||
siblingDoc: siblingDoc[field.name]?.[i] || {},
|
||||
siblingDocWithLocales: siblingDocWithLocales[field.name]?.[i] || {},
|
||||
siblingDoc: getExistingRowDoc(row, siblingDoc[field.name]?.[i]),
|
||||
siblingDocWithLocales: getExistingRowDoc(row, siblingDocWithLocales[field.name]?.[i]),
|
||||
skipValidation: skipValidationFromHere,
|
||||
});
|
||||
});
|
||||
@@ -247,8 +248,8 @@ export const promise = async ({
|
||||
promises,
|
||||
req,
|
||||
siblingData: row,
|
||||
siblingDoc: siblingDoc[field.name]?.[i] || {},
|
||||
siblingDocWithLocales: siblingDocWithLocales[field.name]?.[i] || {},
|
||||
siblingDoc: getExistingRowDoc(row, siblingDoc[field.name]?.[i]),
|
||||
siblingDocWithLocales: getExistingRowDoc(row, siblingDocWithLocales[field.name]?.[i]),
|
||||
skipValidation: skipValidationFromHere,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user