无法在 ejs 文件 (node.js) 中读取 null 的属性“名称”
Posted
技术标签:
【中文标题】无法在 ejs 文件 (node.js) 中读取 null 的属性“名称”【英文标题】:Cannot read property 'name' of null in ejs file (node.js ) 【发布时间】:2018-08-01 07:55:56 【问题描述】:我正在使用 mongodb 创建一个 node.js Web 应用程序,其中 cmets 与帖子相关联。我收到一个错误“无法读取 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);
);
);
这是我的 show.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 时出现错误并 我似乎无法弄清楚是什么原因造成的。
【问题讨论】:
【参考方案1】:你可以试试这个Post[0].fieldname
因为Post
可以是数组。
<% include partials/header %>
<h1><%=Post[0].name%></h1>
<img src= "<%= Post[0].image%>" >
<p> <%= Post[0].description %> </p>
<% include partials/footer %>
【讨论】:
【参考方案2】:这是因为您使用 cmets 填充了它。解决此问题的一种简单方法是通过进入 mongodb shell 来删除集合。
您可以通过在终端中输入 mongo
进入 mongoDB Shell
然后前往您存储 cmets 的数据库
use camp_ground
在您的情况下,名称会有所不同。
你的收藏可以通过运行这个命令show collections
来查看
在该集合列表中,只需查看您之前创建的带有“cmets”的名称
运行此命令db.comments.drop()
删除此集合
你应该得到
是的
Refer to this image
【讨论】:
【参考方案3】:我的错误是因为我还没有启动 mongodb 服务器。一旦我通过在 cmd 中输入命令“mongod”来启动 mongo 服务器。它工作正常。
【讨论】:
【参考方案4】:我遇到了同样的错误,只需重新启动您的服务器,当您遇到该错误时,只需按 chrome 上的后页按钮并在那里刷新。你不会再面对它了。
【讨论】:
以上是关于无法在 ejs 文件 (node.js) 中读取 null 的属性“名称”的主要内容,如果未能解决你的问题,请参考以下文章
使用 Node.JS、Express 和 EJS 实现 browserify 的示例
如何在 Node.js 和 Express 上的同一个 .ejs 文件上呈现 MySQL 查询的多个结果?