From bbc40b2d2c3dab2e856cdec7255b84f4f292a66f Mon Sep 17 00:00:00 2001 From: Mel O'Hagan Date: Tue, 23 Aug 2022 15:33:04 +0100 Subject: [PATCH 1/2] 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 From 1e9234da8ebd912be1d8e87c62a0c19e8a7b6d28 Mon Sep 17 00:00:00 2001 From: Mel O'Hagan Date: Tue, 23 Aug 2022 15:33:30 +0100 Subject: [PATCH 2/2] lint --- packages/server/src/integrations/mongodb.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/server/src/integrations/mongodb.ts b/packages/server/src/integrations/mongodb.ts index f026f36ad4..9f1d41d2ec 100644 --- a/packages/server/src/integrations/mongodb.ts +++ b/packages/server/src/integrations/mongodb.ts @@ -92,8 +92,10 @@ module MongoDBModule { if (json[field] instanceof Object) { json[field] = self.createObjectIds(json[field]) } - if (typeof json[field] === "string" && json[field].toLowerCase().startsWith("objectid")) - { + if ( + typeof json[field] === "string" && + json[field].toLowerCase().startsWith("objectid") + ) { const id = json[field].match( /(?<=objectid\(['"]).*(?=['"]\))/gi )?.[0]