1
我肯定會錯過這裏明顯的東西。我的理解是,下面的代碼應該拋出11000重複鍵錯誤,但它只是將兩個用戶添加到數據庫中,並且不會引發任何錯誤。任何人有任何想法如何使電子郵件獨特? db版本v2.4.5。不能讓貓鼬/ mongoDB扔11000(重複錯誤)
var mongoose = require('mongoose')
, Schema = mongoose.Schema;
mongoose.connect("mongodb://localhost/db");
var User = mongoose.model('User', new Schema({
email: {type: String, index: true, unique: true}
}));
new User({
email: "[email protected]"
}).save(function(err,user){
console.log(err);
});
new User({
email: "[email protected]"
}).save(function(err,user){
console.log(err);
});
編輯
我似乎得到它要去蒙戈命令行工作,並鍵入:
db.users.ensureIndex({email:1},{unique:true});
節點腳本則如預期,並引發了正常工作錯誤。不過,我不知道爲什麼這不是通過貓鼬的工作。貓鼬調試的輸出是:
Mongoose: users.ensureIndex({ email: 1 }) { safe: undefined, background: true, unique: true }
Mongoose: users.insert({ __v: 0, _id: ObjectId("51fb961445cf690000000001"), email: '[email protected]' }) {}
Mongoose: users.insert({ __v: 0, _id: ObjectId("51fb961445cf690000000002"), email: '[email protected]' }) {}
Err=null
Err=null
我注意到,如果我手動執行它,輸出中的ensureIndex行會失敗。
原來是一些因素。在上面的例子中,如果我在確保索引和添加用戶之間留有1秒的間隔,它將按預期工作。另一部分是確保集合已經沒有任何重複。 –