我现在已经做了很多次,但突然之间我无法让它发挥作用。
这是我的路由器
router.get('/', function(req, res, next) {
Account.findOne(
{
_id: req.user._id,
},
function(err, acc) {
if (err) {
console.log(err);
}
console.log(acc.websites);
res.render('reports/index', {
title: 'Reports!',
websites: acc.websites,
user: req.user,
});
}
);
res.render('reports/index', {
title: 'Report',
user: req.user,
});
});
res.render打印数组之前的控制台日志。 ["georgiancollege.ca"]
我的观点:
<% include ./../partials/header.ejs %>
<h1 class="text-center">This is your report page</h1>
<form method="post" action="/generate-report">
<% for(let i=0; i<websites.length; i++){ let website = websites[i] %>
<fieldset>
<label for="website" class="col-sm-2">Website <%=i+1%></label>
<input name="website" id="website" type="text" />
</fieldset>
<% } %>
<button class="btn btn-primary col-sm-offset-2">Login</button>
</form>
<% include ./../partials/footer.ejs %>
现在。当我尝试在浏览器中获取此视图时,错误只是堆积起来。这是报告的一部分。
ReferenceError: /home/iron/Documents/Projects/digitLead/views/reports/index.ejs:4
2| <h1 class="text-center">This is your report page</h1>
3| <form method="post" action="/generate-report">
>> 4| <% for(let i=0; i<websites.length; i++){ let website = websites[i] %>
5| <fieldset>
6| <label for="website" class="col-sm-2">Website <%=i+1%></label>
7| <input name="website" id="website" type="text" />
websites is not defined
at eval (eval at compile (/home/iron/Documents/Projects/digitLead/node_modules/ejs/lib/ejs.js:549:12), <anonymous>:56:23)
at returnedFn (/home/iron/Documents/Projects/digitLead/node_modules/ejs/lib/ejs.js:580:17)
at tryHandleCache (/home/iron/Documents/Projects/digitLead/node_modules/ejs/lib/ejs.js:223:34)
下一个错误
GET /reports 500 52.225 ms - 2919
["georgiancollege.ca"]
events.js:183
throw er; // Unhandled 'error' event
^
TypeError: req.next is not a function
at done (/home/iron/Documents/Projects/digitLead/node_modules/express/lib/response.js:966:25)
at tryRender (/home/iron/Documents/Projects/digitLead/node_modules/express/lib/application.js:642:5)
我不知道我做错了什么,但它太刺激了。
答案 0 :(得分:1)
您只能拨打res.render()
一次。您的处理程序有两次调用res.render()
,因此只有第一个运行计数。在这种情况下,第一个要运行的是不在异步Account.findOne()
句柄中,并且它不包含websites
元素,因此您的模板正在抱怨。