From bbc40b2d2c3dab2e856cdec7255b84f4f292a66f Mon Sep 17 00:00:00 2001 From: Mel O'Hagan Date: Tue, 23 Aug 2022 15:33:04 +0100 Subject: [PATCH] Generic handle objectid --- packages/server/src/integrations/mongodb.ts | 6 ++---- packages/server/src/integrations/tests/mongo.spec.js | 10 +++++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/packages/server/src/integrations/mongodb.ts b/packages/server/src/integrations/mongodb.ts index 4f2a901259..f026f36ad4 100644 --- a/packages/server/src/integrations/mongodb.ts +++ b/packages/server/src/integrations/mongodb.ts @@ -92,10 +92,8 @@ module MongoDBModule { if (json[field] instanceof Object) { json[field] = self.createObjectIds(json[field]) } - if ( - (field === "_id" || field?.startsWith("$")) && - typeof json[field] === "string" - ) { + if (typeof json[field] === "string" && json[field].toLowerCase().startsWith("objectid")) + { const id = json[field].match( /(?<=objectid\(['"]).*(?=['"]\))/gi )?.[0] diff --git a/packages/server/src/integrations/tests/mongo.spec.js b/packages/server/src/integrations/tests/mongo.spec.js index 9687723528..40aa6dbb58 100644 --- a/packages/server/src/integrations/tests/mongo.spec.js +++ b/packages/server/src/integrations/tests/mongo.spec.js @@ -103,16 +103,16 @@ describe("MongoDB Integration", () => { restore() }) - it("creates ObjectIds if the _id fields contains a match on ObjectId", async () => { + it("creates ObjectIds if the field contains a match on ObjectId", async () => { const query = { json: { filter: { _id: "ObjectId('ACBD12345678ABCD12345678')", - name: "ObjectId('name')" + name: "ObjectId('BBBB12345678ABCD12345678')" }, update: { _id: "ObjectId('FFFF12345678ABCD12345678')", - name: "ObjectId('updatedName')", + name: "ObjectId('CCCC12345678ABCD12345678')", }, options: { upsert: false, @@ -126,11 +126,11 @@ describe("MongoDB Integration", () => { const args = config.integration.client.updateOne.mock.calls[0] expect(args[0]).toEqual({ _id: mongo.ObjectID.createFromHexString("ACBD12345678ABCD12345678"), - name: "ObjectId('name')", + name: mongo.ObjectID.createFromHexString("BBBB12345678ABCD12345678"), }) expect(args[1]).toEqual({ _id: mongo.ObjectID.createFromHexString("FFFF12345678ABCD12345678"), - name: "ObjectId('updatedName')", + name: mongo.ObjectID.createFromHexString("CCCC12345678ABCD12345678"), }) expect(args[2]).toEqual({ upsert: false