Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Node.js在pug中呈现数据-呈现页面上无数据_Node.js_Json_Pug - Fatal编程技术网

使用Node.js在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

我正在尝试使用res.render()将数据传递给一个Pug模板。当我在代码中达到这一点时:

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!' }
);