node.js - update - 貓鼬的獨特索引不工作
nodejs window (1)
我試圖創建一個字段(“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在後台創建索引,所以您需要延遲create
調用,直到索引創建完成。 一種方法是使用模型的'index'
事件:
WistiaAnalytic.on('index', function(err) {
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)
});
});