无法读取ID未定义的属性

时间:2019-07-09 07:39:54

标签: javascript node.js mongoose typeerror

我正在建立一个网站,您可以在其中分享露营地的照片。当有人发表评论时,我只希望评论的所有者看到删除和编辑选项。

我创建了一个评论模型,并创建了一个包含评论所有者的ID和用户名的author对象。但是,当我尝试从该作者对象获取所有者的ID时,如果我尝试通过find方法获取数据并编写Comment.author.id,它也会返回undefined,它返回语法错误并显示意外的标记“。”

那是我的评论模型。

var commentSchema = new mongoose.Schema({
    text: String,
    author:{
        username: String,
        id: String,
    }
});

那是露营地路线

Campground.findById(req.params.id).populate("comments").exec(function(err, foundCampground){
        if(err){
            console.log(err);
        }else{
            //render show template with that campground
            console.log(foundCampground.comments);
            User.findById(req.user._id, (err, user)=>{
                if(err){
                    console.log(err);
                }else{
                    console.log(foundCampground.comments._id);
                    Comments.find({Comments.author.id: foundCampground.comments._id}, function(err, comment){
                        var authID = foundCampground.author.id;
                        var userID = user._id;
                        var commentID = comment.author.id;

                        console.log("Comment Id " + commentID);
                        console.log("UserID "+userID);
                        res.render("campgrounds/show",{campground: foundCampground, authID: authID, userID: userID});
                    });

                }
            });
        }
    });

同样的东西在营地模型上起作用

var campgroundSchema = new mongoose.Schema({
    name: String,
    image: String,
    description: String,
    comments: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: "Comment"
    }],
    author: {
        id: String,
        user: String,
    }
});

我希望从comment.author.id获取用户ID,但是我不确定。

1 个答案:

答案 0 :(得分:0)

您可能需要将Comments.find({Comments.author.id: foundCampground.comments._id}替换为Comments.find({"author.id": foundCampground.comments._id}