【发布时间】:2014-07-29 04:20:19
【问题描述】:
我正在尝试在 mongoose 中为字段(“event_key”)创建唯一索引,如果我尝试创建重复条目,我希望 mongodb 不保存。我查看了文档,似乎我需要做的就是在架构中设置index: {unique: true},但我似乎无法让它工作。我尝试了几种不同的排列,但仍然无法正常工作。
此外,required: true 似乎也不起作用,因为即使我没有传入 event_key,我也可以保存条目。我可能错过了一些非常愚蠢的东西,想知道是否有人可以提供帮助?
架构
var WistiaAnalyticSchema = new Schema({
event_key: {type: String, required: true, index: {unique: true}},
visitor_key: String,
created: {type: Date, default: Date.now},
ip: String,
})
尝试添加到数据库
WistiaAnalytic.create({event_key: '1402230270487e0.2668362990953028'}, function(err) {});
WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) {});
WistiaAnalytic.create({ip: '1402229819163e0.4385743956081569'}, function(err) {});
WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) {
console.log(err)
});
【问题讨论】:
-
Mongoose 在后台创建索引,因此如果您一次性完成所有操作,它可能无法按预期工作,因为您最终会在有机会创建索引之前添加文档。
-
@JohnnyHK 感谢您的评论!那您知道解决方法吗?
-
添加到@JohnnyHK,要添加延迟,您需要一个接一个地运行所有这些命令。为此,您可以使用 async.js。查看此墨水以获取更多信息stackoverflow.com/questions/17181248/…