From ab776e80ea77e871dfb6c47bc61790ba21b9c759 Mon Sep 17 00:00:00 2001 From: Evan Nimmo Date: Wed, 24 Apr 2024 09:48:31 +1200 Subject: [PATCH 1/2] Add support for findOneAndReplace findOneAndReplace is currently not supported. This is required since a change in mongoose (commit 0caeb6b2e8428cb56573b75212ddb7c186c2725d) swapped findOneAndUpdate with the overwrite option set to use findOneAndReplace which is not supported by mongoose-lean-getters. --- index.js | 1 + test/index.test.js | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/index.js b/index.js index eaf2abb..82bef66 100644 --- a/index.js +++ b/index.js @@ -28,6 +28,7 @@ module.exports = function mongooseLeanGetters(schema) { schema.post('findOne', fn); schema.post('findOneAndUpdate', fn); schema.post('findOneAndDelete', fn); + schema.post('findOneAndReplace', fn); }; function applyGettersMiddleware(schema) { diff --git a/test/index.test.js b/test/index.test.js index d163e46..fac5656 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -330,4 +330,24 @@ describe('mongoose-lean-getters', function() { assert.strictEqual(user.name, 'ONE'); assert.deepStrictEqual(foundUser.emails, ['TWO', 'THREE']); }); + + it('should work with findOneAndReplace (gh-31)', async function() { + const testSchema = new mongoose.Schema({ + field: Number, + }); + testSchema.plugin(mongooseLeanGetters); + + testSchema.path('field').get(function(field) { + return field.toString(); + }); + const Test = mongoose.model('gh-31', testSchema); + + await Test.deleteMany({}); + const entry = await Test.create({ + field: 1337 + }); + const doc = await Test.findOneAndReplace({ _id: entry._id }, entry).lean({ getters: true }); + assert.equal(typeof doc.field, 'string'); + assert.equal(doc.field, '1337'); + }); }); From bc5b4887c944a152651f01dd9ef4664f1e3689f2 Mon Sep 17 00:00:00 2001 From: Valeri Karpov Date: Sat, 27 Apr 2024 14:14:55 -0400 Subject: [PATCH 2/2] Update index.test.js --- test/index.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/index.test.js b/test/index.test.js index fac5656..1bfe739 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -348,6 +348,6 @@ describe('mongoose-lean-getters', function() { }); const doc = await Test.findOneAndReplace({ _id: entry._id }, entry).lean({ getters: true }); assert.equal(typeof doc.field, 'string'); - assert.equal(doc.field, '1337'); + assert.strictEqual(doc.field, '1337'); }); });