我一直在为这个项目苦苦挣扎。我正在遵循一些在某些领域过时的教程,例如他们的Jquery版本对某些函数使用了完全不同的格式,我不得不做很多改变。但我认为我已经陷入了最后一个无法找到解决方案的重大问题。在我的Schema变量中,我有_id,用户名和密码类型
var UserSchema = new mongoose.Schema({
_id: mongoose.Schema.ObjectId,
username: String,
password: String
});
但是当我尝试将新用户添加到我的应用程序时,它不会获得我应该获得的警报,而是弹出为[object Object]并且没有任何内容添加到数据库中。然后在mongo cmd中弹出此错误
“错误:文档在保存之前必须有_id”。
我已经尝试评论_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" : "...."
});
不要在模型中指定_id:mongoose.Schema.ObjectId。如果您省略_id,系统会创建id:
var UserSchema = new mongoose.Schema({
username: String,
password: String
});