如何解决无法读取代码中标记为空的错误的属性“帖子”
代码在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);
}
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。