diff --git a/.changeset/red-foxes-sneeze.md b/.changeset/red-foxes-sneeze.md new file mode 100644 index 00000000..ed62a307 --- /dev/null +++ b/.changeset/red-foxes-sneeze.md @@ -0,0 +1,5 @@ +--- +"@aeriajs/core": patch +--- + +Fix `cascadingRemove()` behavior when the same ObjectId is sent diff --git a/packages/core/src/collection/traverseDocument.ts b/packages/core/src/collection/traverseDocument.ts index e97f8ff7..5c6a5818 100644 --- a/packages/core/src/collection/traverseDocument.ts +++ b/packages/core/src/collection/traverseDocument.ts @@ -122,6 +122,10 @@ const cleanupReferences = async (value: unknown, ctx: PhaseContext) => { } referenceIds = referenceIds.filter((oldId) => !(value as ObjectId[]).some((valueId) => valueId.equals(oldId))) + } else { + if( referenceIds.equals(value as ObjectId) ) { + return value + } } const refMap = await getReferences(ctx.options.description.properties)