你好我在推送新的子文档之前检查是否存在子文档时遇到此问题。
var UserSchema = new Schema({
name : String,
app_key : String,
app_secret : String,
tasks : [{type: Schema.ObjectId, ref: 'Task'}] // assuming you name your model Task
});
var TaskSchema = new Schema({
name : String,
lastPerformed : Date,
folder : String,
user : {type: Schema.ObjectId, ref: 'User'} // assuming you name your model User
});
有了这个,您对所有用户的查询,包括他们的任务数组可能是:
User.findOne({...}).populate('tasks').run(function(err, user) {
var subdoc = user.tasks.id(mytask.id);
if(subdoc){
//not exist
//push
}
});
这是错误:
TypeError: Object has no method 'id'
答案 0 :(得分:1)
您收到该错误,因为没有为“tasks”子文档定义“id”字段。您可能需要'user.tasks。 _id ',它将返回MongoDB默认添加到其文档中的ObjectId。