首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[ERR_HTTP_HEADERS_SENT]:无法在将标题发送给客户端之后设置它们--我在哪里这样做?

[ERR_HTTP_HEADERS_SENT]:无法在将标题发送给客户端之后设置它们--我在哪里这样做?
EN

Stack Overflow用户
提问于 2021-12-27 01:01:43
回答 1查看 55关注 0票数 0

我正在尝试使用下面的middleware.js文件分页事件索引页

代码语言:javascript
复制
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);
    }
}

这是我的路由器:

代码语言:javascript
复制
router.route('/')
    .get(catchAsync (events.index))

下面是控制器函数,在这里,我收到了两次传递标头的错误:

代码语言:javascript
复制
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数据,因此我想使用相同的变量名,这样我就不必刷新下面的客户机代码:

代码语言:javascript
复制
<% 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>
<% }%>

帮帮我,欧比万·克诺比..。

EN

回答 1

Stack Overflow用户

发布于 2021-12-27 01:09:06

您只能发送一次res,因此必须将json与视图一起发送,以避免此错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70490872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档