diff --git a/lib/model.js b/lib/model.js index c592b2af915..00efe95f740 100644 --- a/lib/model.js +++ b/lib/model.js @@ -1362,7 +1362,7 @@ Model.syncIndexes = function syncIndexes(options, callback) { cb = this.$wrapCallback(cb); this.createCollection(err => { - if (err) { + if (err != null && err.codeName !== 'NamespaceExists') { return cb(err); } this.cleanIndexes((err, dropped) => { @@ -4848,7 +4848,7 @@ Model.$wrapCallback = function(callback) { if (err != null && err.name === 'MongoServerSelectionError') { arguments[0] = serverSelectionError.assimilateError(err); } - if (err != null && err.name === 'MongoNetworkError' && err.message.endsWith('timed out')) { + if (err != null && err.name === 'MongoNetworkTimeoutError' && err.message.endsWith('timed out')) { _this.db.emit('timeout'); } diff --git a/package.json b/package.json index 01b2712f09b..a711ca83058 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "dependencies": { "bson": "^1.1.4", "kareem": "2.3.1", - "mongodb": "3.5.10", + "mongodb": "3.6.0", "mongoose-legacy-pluralize": "1.0.2", "mpath": "0.7.0", "mquery": "3.2.2", diff --git a/test/model.indexes.test.js b/test/model.indexes.test.js index cb6f3993e9b..9e6b63012ea 100644 --- a/test/model.indexes.test.js +++ b/test/model.indexes.test.js @@ -20,7 +20,7 @@ describe('model', function() { before(function() { db = start(); - return db.createCollection('Test'); + return db.createCollection('Test').catch(() => {}); }); after(function(done) { @@ -458,16 +458,18 @@ describe('model', function() { const schema = new Schema({ arr: [childSchema] }); const Model = db.model('Test', schema); - return Model.init(). - then(() => Model.syncIndexes()). - then(() => Model.listIndexes()). - then(indexes => { - assert.equal(indexes.length, 2); - assert.ok(indexes[1].partialFilterExpression); - assert.deepEqual(indexes[1].partialFilterExpression, { - 'arr.name': { $exists: true } - }); + return co(function*() { + yield Model.init(); + + yield Model.syncIndexes(); + const indexes = yield Model.listIndexes(); + + assert.equal(indexes.length, 2); + assert.ok(indexes[1].partialFilterExpression); + assert.deepEqual(indexes[1].partialFilterExpression, { + 'arr.name': { $exists: true } }); + }); }); it('skips automatic indexing on childSchema if autoIndex: false (gh-9150)', function() {