无法读取代码中标记为空的错误的属性“帖子”

问题描述

代码在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);
}
})

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...