我有这样的事情:
var mongoose = require('mongoose');
mongoose.connect('mongodb://...');
var UserSchema = mongoose.Schema({
name: {
type: String,
unique: true
},
token: {
type: String,
unique: true,
sparse: true
}
});
var User = mongoose.model('User', UserSchema);
var peter = new User();
peter.name = 'peter';
peter.token = null;
peter.save(function(err) {
if (err) console.log(err);
console.log('done with peter');
var john = new User();
john.name = 'john';
john.token = null;
john.save(function(err) {
if (err) console.log(err);
console.log('done with john');
});
});
所以peter
是先创建后创建的john
。但是,何时john
保存mongoose
返回以下错误
{ [MongoError: E11000 duplicate key error index: node-login.users.$token_1 dup key: { : null }]
name: 'MongoError',
err: 'E11000 duplicate key error index: node-login.users.$token_1 dup key: { : null }',
code: 11000,
n: 0,
lastOp: 0,
connectionId: 4527333,
ok: 1 }
代码在mongolab运行mongo v2.0.7
和mongoose v3.5.1
.
我认为设置索引以sparse
允许多个null
值。索引已正确设置为 mongolab 后端显示的“索引”选项true
卡unique
和sparse
. 任何想法为什么我会收到错误?