From 267667c605def08b74346df1227bf6dac3336cee Mon Sep 17 00:00:00 2001 From: ringeringeraja Date: Wed, 16 Oct 2024 20:30:48 -0300 Subject: [PATCH] fix(core): `cascadingRemove()` behavior when the same ObjectId is sent --- .changeset/red-foxes-sneeze.md | 5 +++++ packages/core/src/collection/traverseDocument.ts | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 .changeset/red-foxes-sneeze.md 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)