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)
    });
});




mongoose