From 694c987f1e729b6454db201bd23c06c76b2cea54 Mon Sep 17 00:00:00 2001 From: ringeringeraja Date: Thu, 22 Aug 2024 18:34:55 -0300 Subject: [PATCH] fix(core): retrieve only ObjectIds when `populate` array is empty --- .changeset/modern-squids-change.md | 5 +++++ packages/core/src/collection/reference.ts | 4 ++++ packages/core/tests/fixtures/aeriaMain.js | 4 ++++ packages/core/tests/fixtures/documents.ts | 1 + packages/core/tests/reference.spec.ts | 9 +++++++++ 5 files changed, 23 insertions(+) create mode 100644 .changeset/modern-squids-change.md diff --git a/.changeset/modern-squids-change.md b/.changeset/modern-squids-change.md new file mode 100644 index 00000000..fe49207a --- /dev/null +++ b/.changeset/modern-squids-change.md @@ -0,0 +1,5 @@ +--- +"@aeriajs/core": patch +--- + +Retrieve only ObjectIds when `populate` array is empty diff --git a/packages/core/src/collection/reference.ts b/packages/core/src/collection/reference.ts index 96324033..cc440353 100644 --- a/packages/core/src/collection/reference.ts +++ b/packages/core/src/collection/reference.ts @@ -67,6 +67,10 @@ export const getReferences = async (properties: FixedObjectProperty['properties' const description = throwIfError(await getCollectionAsset(refProperty.$ref, 'description')) if( refProperty.populate ) { + if( refProperty.populate.length === 0 ) { + continue + } + const deepReferences = await getReferences(description.properties, { depth: depth + 1, maxDepth: refProperty.populateDepth || maxDepth, diff --git a/packages/core/tests/fixtures/aeriaMain.js b/packages/core/tests/fixtures/aeriaMain.js index c9dc3019..d546c4e5 100644 --- a/packages/core/tests/fixtures/aeriaMain.js +++ b/packages/core/tests/fixtures/aeriaMain.js @@ -83,6 +83,10 @@ exports.default = init({ $id: 'project', required: [], properties: { + user_id: { + $ref: 'user', + populate: [], + }, created_by: { $ref: 'person', populate: [ diff --git a/packages/core/tests/fixtures/documents.ts b/packages/core/tests/fixtures/documents.ts index 22391556..20e6d1fe 100644 --- a/packages/core/tests/fixtures/documents.ts +++ b/packages/core/tests/fixtures/documents.ts @@ -65,6 +65,7 @@ export const documents = (async () => { const project = throwIfError(await insert({ what: { + user_id: user1, created_by: person1, stakeholders: { owner: person1, diff --git a/packages/core/tests/reference.spec.ts b/packages/core/tests/reference.spec.ts index 15fe9d10..6d41e45b 100644 --- a/packages/core/tests/reference.spec.ts +++ b/packages/core/tests/reference.spec.ts @@ -11,9 +11,18 @@ test('populates top level references', async () => { } = await documents expect(person1.equals(project.created_by._id)).toBe(true) + expect(user1.equals(project.user_id)).toBe(true) expect(user1.equals(project.created_by.user._id)).toBe(true) expect(file1.equals(project.created_by.user.picture_file._id)).toBe(true) +}) + +test('respects the "populate" property', async () => { + const { + user1, + project, + } = await documents + expect(user1.equals(project.user_id)).toBe(true) }) test('populates deep-nested references', async () => {