猫鼬独特:真的不起作用[重复]
Posted
技术标签:
【中文标题】猫鼬独特:真的不起作用[重复]【英文标题】:mongoose unique: true not work [duplicate] 【发布时间】:2015-02-05 22:07:41 【问题描述】:为什么 mongoose unique 在这个脚本中根本不起作用
var child_process = require('child_process');
// Load required packages
child_process.exec("mongo test --eval 'db.users.drop();'", function(err)
var mongoose = require('mongoose');
console.log(mongoose.version);
mongoose.connect('mongodb://localhost:27017/test');
// Define our user schema
var json = ;
json.phone = type: String, required: true, unique: true;
var UserSchema = new mongoose.Schema(json);
var Model = mongoose.model('user', UserSchema);
var jp = new Model( phone: "123456");
mongoose.connection.on('open', function()
console.log(jp);
jp.save(function(err)
console.log(err);
var jp2 = new Model( phone: "123456");
console.log(jp2);
jp2.save(function(err)
console.log(err);
process.exit();
);
)
);
);
我很困惑,结果是这样的
3.8.20
phone: '123456', _id: 54856cceb5b40f7a88fcc2af
null
phone: '123456', _id: 54856cceb5b40f7a88fcc2b0
null
感谢您的帮助。
【问题讨论】:
【参考方案1】:发生这种情况是因为您在 mongoose
完成创建索引之前保存了重复的文档。在您的应用启动后,Mongoose 会随时随地创建索引。
因此,为确保仅在创建索引后保存您的文档,您必须监听模型的 index
事件。例如:
Model.on('index', function (error)
console.log(jp);
jp.save(function(err)
console.log(err);
var jp2 = new Model( phone: "123456");
console.log(jp2);
jp2.save(function(err)
console.log(err);
process.exit();
);
)
);
现在,当您尝试保存第二个文档(重复的文档)时,您的 MongoDB 将引发错误,因为您的 save
调用将在创建索引后运行。
【讨论】:
谢谢,这就是我想要的。以上是关于猫鼬独特:真的不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
猫鼬 findByIdAndUpdate 不起作用。 new: true 包括
猫鼬 TTL partialFilterExpression 不起作用?