mongoose独特:true无效

为什么在此脚本中猫鼬唯一不起作用

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

});

})

});

});

我很困惑,结果就像

3.8.20

{ phone: '123456', _id: 54856cceb5b40f7a88fcc2af }

null

{ phone: '123456', _id: 54856cceb5b40f7a88fcc2b0 }

null

谢谢您的帮助。

回答:

发生这种情况是因为您要在mongoose完成索引创建之前保存重复的文档。在您的应用启动后,Mongoose可以随时随地创建索引。

因此,为确保仅在创建索引后才保存文档,您必须侦听index模型事件。例如:

Model.on('index', function (error) {

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

});

})

});

现在,当您尝试保存第二个文档(重复的文档)时,MongoDB将引发错误,因为您的save调用将在创建索引后立即运行。

以上是 mongoose独特:true无效 的全部内容, 来源链接: utcz.com/qa/406042.html

回到顶部