代码之家  ›  专栏  ›  技术社区  ›  Ashutosh

无法读取ejs文件(node.js)中null的属性“name”

  •  -1
  • Ashutosh  · 技术社区  · 7 年前

    我正在创建一个节点。使用mongodb的js web app,其中评论与帖子关联。我收到一个错误“无法读取null的属性‘name’”。

    TypeError: /home/ubuntu/workspace/YelpCamp/views/show.ejs:3
    1| <% include partials/header %>
    2| >> 
    3| <h1><%= Post.name %></h1>
    4| 
    5| <img src="<%= Post.image %>">
    6| 
    Cannot read property 'name' of null
    

    实际上,此错误是在设定数据库种子后发生的。这里是我的表演路线代码-

    app.get("/posts/:id", function(req, res){
        post.findById(req.params.id).populate("comments").exec(function(err, foundPost){
            if(err){
                console.log(err);
            }
            else {
                res.render("show", {Post : foundPost});
            }
        });
    });
    

    这是我的节目。ejs模板代码-

    <% include partials/header %>
    <h1><%=Post.name%></h1>
    <img src= "<%= Post.image%>" >
    <p> <%= Post.description %> </p>
    <% include partials/footer %>
    

    我的帖子架构和注释架构代码-

    var postSchema = new mongoose.Schema({
    name : String,
    image : String,
    description : String,
    comments : [
            {
                type : mongoose.Schema.Types.ObjectId,
                ref : "comment"
            }
        ]
    });
    

    发布架构-

    var commentSchema = new mongoose.Schema({
    text : String,
    author : String
    });
    module.exports = mongoose.model("comment", commentSchema);
    

    由于某种原因,当我尝试访问show route时,我得到了错误,并且 我似乎不知道是什么原因造成的。

    4 回复  |  直到 7 年前
        1
  •  0
  •   Rupesh    7 年前

    你可以试试这个 Post[0].fieldname beacause公司 Post 可以是数组。

    <% include partials/header %>
    <h1><%=Post[0].name%></h1>
    <img src= "<%= Post[0].image%>" >
    <p> <%= Post[0].description %> </p>
    <% include partials/footer %>
    
        2
  •  0
  •   Anas M.I    6 年前

    这是因为您在其中填充了注释。解决这个问题的一个简单方法是通过进入mongodb shell来删除集合。

    您可以通过键入 mongo 在您的终端中

    然后直接访问存储评论的数据库

    use camp_ground
    

    在你的情况下,名称会有所不同。

    通过运行此命令可以查看您的集合 show collections

    在该集合列表中,只需查看您之前创建的带有“注释”的名称

    通过运行以下命令删除此集合 db.comments.drop()

    你应该

    真的

    Refer to this image

        3
  •  0
  •   Ashutosh    6 年前

    出现错误是因为我尚未启动mongodb服务器。有一次,我通过在cmd中输入命令mongod来启动mongo服务器。它工作得很好。

        4
  •  0
  •   Yogesh Parmar    4 年前

    我遇到了同样的错误,只需重新启动服务器,当您遇到错误时,只需按chrome上的back page按钮并刷新即可。你不会再面对它了。