我使用Mongoose/MongoDb创建唯一索引时遇到问题,无法使其工作.在设置唯一索引时,我可以添加两个具有相同属性值的文档.
我已经尝试了我能想到的一切 - 重新启动(一切)改变语法等.
这是我用来保存实体的方法:
create : function(entity, definition, successFn, errorFn){
var model = mongoose.model(entity);
newModel = new model(definition);
newModel.save(function(error) {
if(error){
if(!errorFn){
throw error;
}
errorFn(newModel);
return;
}
successFn(newModel);
});
}...
Run Code Online (Sandbox Code Playgroud)
<<
var Something = new Schema({
objectId : ObjectId,
name : { type : String, index: { unique: true }},
url : { type : String, index: { unique: true }},
...etc
mongoose.model('Something', Something);
Run Code Online (Sandbox Code Playgroud)
[conn1] insert xxxxx.agencies 1526ms
[conn1] building new index on { name: …Run Code Online (Sandbox Code Playgroud) 为什么mongoose在这个剧本中根本不起作用
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();
});
})
});
});
Run Code Online (Sandbox Code Playgroud)
我很困惑,结果就像
3.8.20
{ phone: '123456', …Run Code Online (Sandbox Code Playgroud)