无法读取空节点的 属性 'name'
Cannot read property 'name' of null node
架构
var campgroundSchema = new mongoose.Schema({
name: String,
image: String,
description: String,
_id: String
});
var Campground = mongoose.model("Campground", campgroundSchema);
app.get("/campgrounds/:id",function(req , res){
Campground.findById(req.params._id, function(err, foundCampgrounds){
if(err){
console.log(err);
}else{
res.render("show", {campground: foundCampgrounds});
}
});
});
show.ejs
<%- include('partials/header') %>
<h1>this is a show template</h1>
<p><%= campground.name %></p>
<img src="<%=campground.image%>">
<%- include('partials/footer') %>
错误
TypeError: /home/ec2-user/environment/Yelpcamp/v2/views/show.ejs:3`
1| <%- include('partials/header') %> `
2| <h1>this is a show template</h1>`
>> 3| <p><%= campground.name %></p>`
4| <img src="<%=campground.image%>">`
5|
6| <%- include('partials/footer') %>`
Cannot read property 'name' of null
at eval (/home/ec2-user/environment/Yelpcamp/v2/views/show.ejs:13:37)
at show (/home/ec2-user/environment/Yelpcamp/v2/node_modules/ejs/lib/ejs.js:656:17)
at tryHandleCache (/home/ec2-user/environment/Yelpcamp/v2/node_modules/ejs/lib/ejs.js:254:36)
at View.exports.renderFile [as engine] (/home/ec2-user/environment/Yelpcamp/v2/node_modules/ejs/lib/ejs.js:459:10)
at View.render (/home/ec2-user/environment/Yelpcamp/v2/node_modules/express/lib/view.js:135:8)
at tryRender (/home/ec2-user/environment/Yelpcamp/v2/node_modules/express/lib/application.js:640:10)
at Function.render (/home/ec2-user/environment/Yelpcamp/v2/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/home/ec2-user/environment/Yelpcamp/v2/node_modules/express/lib/response.js:1012:7)
at /home/ec2-user/environment/Yelpcamp/v2/app.js:74:17
at /home/ec2-user/environment/Yelpcamp/v2/node_modules/mongoose/lib/model.js:4828:16
at /home/ec2-user/environment/Yelpcamp/v2/node_modules/mongoose/lib/query.js:4390:12
at model.Query.Query._completeOne (/home/ec2-user/environment/Yelpcamp/v2/node_modules/mongoose/lib/query.js:2074:12)
at Immediate.Query.base.findOne.call (/home/ec2-user/environment/Yelpcamp/v2/node_modules/mongoose/lib/query.js:2136:10)
at Immediate. (/home/ec2-user/environment/Yelpcamp/v2/node_modules/mquery/lib/utils.js:116:16)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
即使在重新启动后我仍收到此错误 mongodb
以及如何检查名称是否为空
解决方法是:
- 重启服务器后,打开“/campgrounds”页面,我这里是“http://localhost:3000/campgrounds”
- 然后点击更多信息。
我也遇到了同样的问题,但是当我从/campgrounds页面打开时就解决了
bruh 必须 req.params.id 没有下划线 :)
问题的解决有点简单,就在这行代码中
res.redirect("/campgrounds"{campground:newCampgrounds})
您可能没有将 newCampgrounds
引用到将在 show.ejs 中使用的露营地,如 campground.name
或 campground.image
等等..
架构
var campgroundSchema = new mongoose.Schema({
name: String,
image: String,
description: String,
_id: String
});
var Campground = mongoose.model("Campground", campgroundSchema);
app.get("/campgrounds/:id",function(req , res){
Campground.findById(req.params._id, function(err, foundCampgrounds){
if(err){
console.log(err);
}else{
res.render("show", {campground: foundCampgrounds});
}
});
});
show.ejs
<%- include('partials/header') %>
<h1>this is a show template</h1>
<p><%= campground.name %></p>
<img src="<%=campground.image%>">
<%- include('partials/footer') %>
错误
TypeError: /home/ec2-user/environment/Yelpcamp/v2/views/show.ejs:3`
1| <%- include('partials/header') %> `
2| <h1>this is a show template</h1>`
>> 3| <p><%= campground.name %></p>`
4| <img src="<%=campground.image%>">`
5|
6| <%- include('partials/footer') %>`
Cannot read property 'name' of null at eval (/home/ec2-user/environment/Yelpcamp/v2/views/show.ejs:13:37) at show (/home/ec2-user/environment/Yelpcamp/v2/node_modules/ejs/lib/ejs.js:656:17) at tryHandleCache (/home/ec2-user/environment/Yelpcamp/v2/node_modules/ejs/lib/ejs.js:254:36) at View.exports.renderFile [as engine] (/home/ec2-user/environment/Yelpcamp/v2/node_modules/ejs/lib/ejs.js:459:10) at View.render (/home/ec2-user/environment/Yelpcamp/v2/node_modules/express/lib/view.js:135:8) at tryRender (/home/ec2-user/environment/Yelpcamp/v2/node_modules/express/lib/application.js:640:10) at Function.render (/home/ec2-user/environment/Yelpcamp/v2/node_modules/express/lib/application.js:592:3) at ServerResponse.render (/home/ec2-user/environment/Yelpcamp/v2/node_modules/express/lib/response.js:1012:7) at /home/ec2-user/environment/Yelpcamp/v2/app.js:74:17 at /home/ec2-user/environment/Yelpcamp/v2/node_modules/mongoose/lib/model.js:4828:16 at /home/ec2-user/environment/Yelpcamp/v2/node_modules/mongoose/lib/query.js:4390:12 at model.Query.Query._completeOne (/home/ec2-user/environment/Yelpcamp/v2/node_modules/mongoose/lib/query.js:2074:12) at Immediate.Query.base.findOne.call (/home/ec2-user/environment/Yelpcamp/v2/node_modules/mongoose/lib/query.js:2136:10) at Immediate. (/home/ec2-user/environment/Yelpcamp/v2/node_modules/mquery/lib/utils.js:116:16) at runCallback (timers.js:705:18) at tryOnImmediate (timers.js:676:5)
即使在重新启动后我仍收到此错误 mongodb 以及如何检查名称是否为空
解决方法是:
- 重启服务器后,打开“/campgrounds”页面,我这里是“http://localhost:3000/campgrounds”
- 然后点击更多信息。
我也遇到了同样的问题,但是当我从/campgrounds页面打开时就解决了
bruh 必须 req.params.id 没有下划线 :)
问题的解决有点简单,就在这行代码中
res.redirect("/campgrounds"{campground:newCampgrounds})
您可能没有将 newCampgrounds
引用到将在 show.ejs 中使用的露营地,如 campground.name
或 campground.image
等等..