MongoDB - 错误:文档在保存前必须有_id

问题描述:

我一直在为这个项目苦苦挣扎。我正在学习一些在某些领域已经过时的教程,例如,他们的Jquery版本为某些功能使用了完全不同的格式,我不得不做很多改变。但是我认为我陷入了最后一个我无法找到解决办法的重大问题。在我的架构可变我已经得到了_id,用户名和密码类型MongoDB - 错误:文档在保存前必须有_id

var UserSchema = new mongoose.Schema({ 
    _id: mongoose.Schema.ObjectId, 
    username: String, 
    password: String 
}); 

,但是当我去尝试一个新的用户添加的不是得到我应该得到警惕我的应用程序,它弹出为[对象对象],没有任何东西被添加到数据库中。然后,这个错误在蒙戈弹出CMD

"Error: document must have an _id before saving".

我试着注释掉_id线,我得到正确的消息,但仍然没有在我的数据库显示出来。

请尝试下面的代码片段我想将_id命名为userId,但您也可以不使用它。

var Schema = mongoose.Schema, 
 
ObjectId = Schema.ObjectId; 
 

 
var UserSchema = new Schema({ 
 
    username: String, 
 
    password: String 
 
}); 
 
UserSchema.virtual('userId').get(function(){ 
 
    return this._id; 
 
});

_id由MongoDB的自动添加。

如果你想保持_id您的数据结构一定要正确初始化:

var obj = new UserSchema({ 
    "_id": new ObjectID(), 
    "username": "Bill", 
    "password" : "...." 
}); 

它相当简单:

  1. 如果已经显式声明的模式_id领域,你必须初始化它明确地
  2. 如果你还没有在模式中声明它,MongoDB将声明并初始化它。

你不能做的是将它放在模式中,但不要初始化它。它会抛出你所说的错误

+0

http://complexspiral.com/publications/containing-floats/ –