问题描述
代码在foundUser.posts.push(post)
行上抛出错误
var userSchema=new mongoose.Schema({
email:String,name:String,posts:[
{
type:mongoose.Schema.Types.ObjectId,ref:"post"
}
]
});
User.findOne({name:"Karikey Sharma"},function(err,foundUser){
if(err){
}else{
foundUser.posts.push(post); // this line shows error saying cannot read posts
foundUser.save(function(err,data){
if(err){
}else{
console.log(data);
}
})
}
});
解决方法
您的查询似乎正在返回null
,即您提供的查询(User
中未找到{name:"Karikey Sharma"}
。
这意味着将foundUser
设置为null
并尝试访问foundUser.posts
意味着执行null.posts
,这将引发错误,因为null
没有任何posts
之类的属性。
您可以试试看,
User.findOne({name:"Karikey Sharma"},function(err,foundUser){
if(err || foundUser === null){ // Check if there was an error,or no user was found
}else{
foundUser.posts.push(post);
foundUser.save(function(err,data){
,
如果您正在使用填充,则还需要具有Post模式。
var postSchema=new mongoose.Schema({ text:String,....
user:{ type:mongoose.Schema.Types.ObjectId,ref:"user" } });
,如果您也想获取帖子,则尝试在用户架构中获取任何项目时,您需要使用populate()这样的内容。
User.findOne({name:"Karikey Sharma"}).populate('post').exec((err,user)=>{
if(err || !user){
return;
}
else{
user.posts.push(post.id);
}
})