Merge pull request #17004 from overleaf/bg-mongoose-mongo-compatibility

Ensure Mongoose and mongodb modules use the same mongodb instance

GitOrigin-RevId: fb55f3dfcff73919a4c5d26a354ba7c55b1e63c1
This commit is contained in:
Brian Gough 2024-02-22 12:15:34 +00:00 committed by Copybot
parent b59326e96f
commit c8cc34377f

View file

@ -1,7 +1,20 @@
const { ObjectId, ReadPreference } = require('mongodb')
const mongodb = require('mongodb')
const OError = require('@overleaf/o-error')
const Settings = require('@overleaf/settings')
const { getNativeDb } = require('./Mongoose')
const Mongoose = require('./Mongoose')
// Ensure Mongoose is using the same mongodb instance as the mongodb module,
// otherwise we will get multiple versions of the ObjectId class. Mongoose
// patches ObjectId, so loading multiple versions of the mongodb module can
// cause problems with ObjectId comparisons.
if (Mongoose.mongo !== mongodb) {
throw new OError(
'FATAL ERROR: Mongoose is using a different mongodb instance'
)
}
const { getNativeDb } = Mongoose
const { ObjectId, ReadPreference } = mongodb
if (
typeof global.beforeEach === 'function' &&