diff --git a/lib/model.js b/lib/model.js index 763b02bf6d0..b55ce7daccb 100644 --- a/lib/model.js +++ b/lib/model.js @@ -1526,7 +1526,12 @@ Model.diffIndexes = async function diffIndexes() { const model = this; - let dbIndexes = await model.listIndexes(); + let dbIndexes = await model.listIndexes().catch(err => { + if (err.codeName == 'NamespaceNotFound') { + return undefined; + } + throw err; + }); if (dbIndexes === undefined) { dbIndexes = []; } diff --git a/test/model.indexes.test.js b/test/model.indexes.test.js index ed25a0818db..d94935ebff1 100644 --- a/test/model.indexes.test.js +++ b/test/model.indexes.test.js @@ -714,5 +714,15 @@ describe('model', function() { assert.deepStrictEqual(result.toDrop, ['age_1', 'weight_1']); assert.deepStrictEqual(result.toCreate, [{ password: 1 }, { email: 1 }]); }); + + it('running diffIndexes with a non-existent collection should not throw an error (gh-14010)', async function() { + const testSchema = new mongoose.Schema({ + name: String + }); + + const Test = db.model('gh14010', testSchema); + const res = await Test.diffIndexes(); + assert.ok(res); + }); }); });