Skip to content

Commit 25c350f

Browse files
committed
fix(model): always emit 'index', even if no indexes
Re: #3347
1 parent 5908ef0 commit 25c350f

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

lib/model.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -929,14 +929,6 @@ Model.ensureIndexes = function ensureIndexes(options, callback) {
929929

930930
function _ensureIndexes(model, options, callback) {
931931
var indexes = model.schema.indexes();
932-
if (!indexes.length) {
933-
setImmediate(function() {
934-
callback && callback();
935-
});
936-
return;
937-
}
938-
// Indexes are created one-by-one to support how MongoDB < 2.4 deals
939-
// with background indexes.
940932

941933
var done = function(err) {
942934
if (err && model.schema.options.emitIndexErrors) {
@@ -946,6 +938,15 @@ function _ensureIndexes(model, options, callback) {
946938
callback && callback(err);
947939
};
948940

941+
if (!indexes.length) {
942+
setImmediate(function() {
943+
done();
944+
});
945+
return;
946+
}
947+
// Indexes are created one-by-one to support how MongoDB < 2.4 deals
948+
// with background indexes.
949+
949950
var indexSingleDone = function(err, fields, options, name) {
950951
model.emit('index-single-done', err, fields, options, name);
951952
};

test/model.indexes.test.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -226,16 +226,17 @@ describe('model', function() {
226226
schema = new Schema({name: {type: String}}),
227227
Test = db.model('IndexError', schema, 'x' + random());
228228

229-
Test.on('index', function(err) {
230-
db.close();
231-
assert.ok(/E11000 duplicate key error/.test(err.message), err);
232-
done();
233-
});
234-
235229
Test.create({name: 'hi'}, {name: 'hi'}, function(err) {
236230
assert.strictEqual(err, null);
237231
Test.schema.index({name: 1}, {unique: true});
238232
Test.schema.index({other: 1});
233+
234+
Test.on('index', function(err) {
235+
db.close();
236+
assert.ok(/E11000 duplicate key error/.test(err.message), err);
237+
done();
238+
});
239+
239240
Test.init();
240241
});
241242
});

0 commit comments

Comments
 (0)