我正在尝试使用下面的middleware.js文件分页事件索引页
function paginatedResults(Event) { return async (req, res, next) => {
const page = parseInt(req.query.page);
const limit = parseInt(req.query.limit);
const startIndex = (page - 1) * limit;
const endIndex = page * limit;
const results = {}
if(endIndex < await Event.countDocuments().exec()) {
results.next = {
page: page + 1,
limit: limit
}
}
if(startIndex > 0) {
results.previous = {
page: page - 1,
limit: limit
}
}
results.results = await Event.find().limit(limit).skip(startIndex).exec()
res.paginatedResults = results;
console.log(results);
}
}这是我的路由器:
router.route('/')
.get(catchAsync (events.index))下面是控制器函数,在这里,我收到了两次传递标头的错误:
module.exports.index = async (req, res) => {
const events = await Event.find({}).populate('artist');
res.json(res.paginatedResults);
res.render('events/index', { events })
};我的分页中间件函数中的console.log(results)行工作得很好--它返回正确的数组。但是如何在我的index.js上显示这个数组呢?
此外,我的index.js迭代从控制器函数传递的events数据,因此我想使用相同的变量名,这样我就不必刷新下面的客户机代码:
<% for (let event of events){%>
<div class="card mb-3 shadow">
<div class="row">
<div class="col-md-8">
<div class="card-body">
<% if( (Date.parse(Date().toString()) > Date.parse(event.event_start)) && (Date.parse(Date().toString()) < Date.parse(event.event_end))) { %>
<h5 class="card-title mb-2"><a href="/events/<%= event.id %>"><%= event.event_name %></a>
<span>
<a href="/events/<%= event.id %>/prompt" class="badge bg-success">Check in</a></span>
</h5>
<p class="mb-1 mt-1">Artist: <a href="/artists/<%=event.artist.id%>/"><%= event.artist.username %></a>
</p>
<p class="text mt-1">Date: <%= event.event_start %> </p>
<p class="tetext mt-1xt">Venue: <%= event.venue_name %> </p>
<p class="text mt-1">
<small class="text-muted"><%= event.description %> </small>
</p>
<% } else { %>
<h5 class="card-title mb-2"><a href="/events/<%= event.id %>"><%= event.event_name %></a>
</h5>
<p class="mb-1 mt-1">Artist: <a href="/artists/<%=event.artist.id%>/"><%= event.artist.username %></a>
</p>
<p class="text mt-1">Date: <%= event.event_start %> </p>
<p class="text mt-1">Venue: <%= event.venue_name %> </p>
<p class="text mt-1">
<small class="text-muted"><%= event.description %> </small>
</p>
<% } %>
</div>
</div>
</div>
</div>
<% }%>帮帮我,欧比万·克诺比..。
发布于 2021-12-27 01:09:06
您只能发送一次res,因此必须将json与视图一起发送,以避免此错误。
https://stackoverflow.com/questions/70490872
复制相似问题