From 0a920ddabfb98dc72061361d8630b9e64a16d8ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ad=C3=A1mek?= Date: Sun, 19 Jul 2020 23:43:49 +0200 Subject: [PATCH] fix(core): allow hiding PKs in `toObject()` Closes #644 --- packages/core/src/entity/EntityTransformer.ts | 2 +- tests/EntityHelper.mysql.test.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/core/src/entity/EntityTransformer.ts b/packages/core/src/entity/EntityTransformer.ts index 201552e94b76..9f3a3b9a7579 100644 --- a/packages/core/src/entity/EntityTransformer.ts +++ b/packages/core/src/entity/EntityTransformer.ts @@ -14,7 +14,7 @@ export class EntityTransformer { const ret = {} as EntityData; meta.primaryKeys - .filter(pk => !Utils.isDefined(entity[pk], true) || !meta.properties[pk].hidden) + .filter(pk => !Utils.isDefined(entity[pk], true) || !(meta.properties[pk].hidden || ignoreFields.includes(pk))) .map(pk => [pk, Utils.getPrimaryKeyValue(entity, [pk])] as [string, string]) .forEach(([pk, value]) => ret[platform.getSerializedPrimaryKeyField(pk) as keyof T] = platform.normalizePrimaryKey(value)); diff --git a/tests/EntityHelper.mysql.test.ts b/tests/EntityHelper.mysql.test.ts index 85d08403c0ec..dadb31a884b2 100644 --- a/tests/EntityHelper.mysql.test.ts +++ b/tests/EntityHelper.mysql.test.ts @@ -94,6 +94,12 @@ describe('EntityHelperMySql', () => { expect(jon.identities).toEqual(['3', '4']); }); + test(`toObject allows to hide PK (GH issue 644)`, async () => { + const bar = FooBar2.create('fb'); + await orm.em.persistAndFlush(bar); + expect(wrap(bar).toObject(['id'])).not.toMatchObject({ id: bar.id, name: 'fb' }); + }); + test(`toObject handles recursion in 1:1`, async () => { const bar = FooBar2.create('fb'); bar.baz = new FooBaz2('fz');