使用Node.js在pug中呈现数据-呈现页面上无数据
我正在尝试使用res.render()将数据传递给一个Pug模板。当我在代码中达到这一点时:使用Node.js在pug中呈现数据-呈现页面上无数据,node.js,json,pug,Node.js,Json,Pug,我正在尝试使用res.render()将数据传递给一个Pug模板。当我在代码中达到这一点时: const _renderPage = function(req, res, responseBody) { console.log(responseBody); res.render('page-template', { pageData: responseBody, pageTitle: 'this is the about page!' } ); }; cons
const _renderPage = function(req, res, responseBody) {
console.log(responseBody);
res.render('page-template', {
pageData: responseBody,
pageTitle: 'this is the about page!' }
);
};
console.log(responseBody)显示:
但是,我的Pug模板(如下所示)不会打印pageData.name或pageData.body的实际值,即使它确实打印pageTitle变量:
h1= pageTitle
p Welcome to #{pageData.name}
.row
.col-12
p #{pageData.body}
您的根本问题是
responseBody
是一个数组,您试图将其作为对象访问
更改渲染函数以将数组中的第一个元素馈送到模板,它将按预期工作:
res.render('page-template', {
pageData: responseBody[0],
pageTitle: 'this is the about page!' }
);
您是否尝试过将想要的内容拆分出来,将
pageData
变量一起删除<代码>js res.render('page-template',{……responseBody},pageTitle:'这是关于页面!'});}pug h1=pageTitle p欢迎来到#{name}.row.col-12 p=body
关于问题标题的304部分-从技术上讲,这不是一个错误(4XX是错误,3XX是重定向),但是这个响应在重新加载页面时是有意义的,并且没有任何更改。如果你真的感兴趣,看看这个:谢谢你,这很有效。我复制了一些代码,这些代码用于使用“each x”在不同模板中对数据库项数组进行操作,但没有对其进行适当调整,以便只返回一个项数组。我认为我可以进一步完善我的API代码(未显示)以使用findOne()而不是find(),这将更有意义。当然,它从来没有那么简单:)首先阅读以下内容:最简单(因此运行最快)的解决方案就是取数组的第一个元素。如果数组返回为零长度,请确保您的错误处理可以选择并适当地处理它。
res.render('page-template', {
pageData: responseBody[0],
pageTitle: 'this is the about page!' }
);