在javascript中,我已将对象传递给ejs文件,但它仍然说对象为空
Posted
技术标签:
【中文标题】在javascript中,我已将对象传递给ejs文件,但它仍然说对象为空【英文标题】:In javascript I have passed the object to ejs file, but it still says that object is null 【发布时间】:2020-04-25 12:41:02 【问题描述】:这是 Colt Steele 的 yelp camp 项目。我一直在创建 cmets,我总是收到此警告 Cannot read property 'name' of null。 这是我的 app.js 文件
app.get('/campgrounds/:id', function(req, res)
// find campground with the provided ID
Campground.findById(req.params.id).populate('comments').exec(function(err, foundCampground)
if(err)
console.log(err);
else
console.log(foundCampground)
res.render('show', campground: foundCampground);
);
);
这是 show.ejs 文件
<%- include('partials/header') %>
<h1>
<%= campground.name %>
</h1>
<img src='<%= campground.image %>'>
<p><%= campground.description %></p>
<% campground.comments.forEach(function(comment) %>
<p><%= comment.author %> - <%= comment.text %></p>
<% )%>
<%- include('partials/footer') %>
有人可以帮我看看我的代码有什么问题吗?如果我签入数据库,露营地已经有数据了
【问题讨论】:
console.log(foundCampground)
的结果是什么?
foundCampground
的输出是什么?
它说它是未定义的
露营地是在同一个文件夹中还是在名为 campgrounds 的子文件夹中?
【参考方案1】:
您的 campground.cmets json 数据可能存在问题。
const foundCampground =
name : 'test',
description:'desc test',
image : 'test.jpg',
comments: [
author:"product1",
text : "text1"
,
author:"product2",
text : "text2"
]
res.render('show',campground:foundCampground)
尝试使用这个静态 json,如果它工作正常,然后检查来自数据库的 json 数据。如果您遇到与数据相关的问题,请始终尝试使用静态数据。
【讨论】:
【参考方案2】:我也遇到了同样的问题。就我而言,我从名为“campground”的集合中删除了所有 cmets。请检查您的数据库中的 cmets。如果您使用的是 mongodb,您可以这样做, ```
show dbs
use yelp_camp // name of your db
show collections
(您可能会注意到您的“露营地”收藏为空) 现在刷新您的网页,您会注意到您的“/campgrounds/”网页没有任何露营地,因此使露营地对象 == null。
【讨论】:
以上是关于在javascript中,我已将对象传递给ejs文件,但它仍然说对象为空的主要内容,如果未能解决你的问题,请参考以下文章
如何将对象传递给 innerHTML (JavaScript) 中的函数?
如何将对象传递给 .handlebars 模板并在 javascript 代码块中使用它?