gpt4 book ai didi

node.js - NodeJS mongodb查询ERR_HTTP_HEADERS_SENT

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:37 25 4
gpt4 key购买 nike

我有一个带有express的nodejs mongoose后端api,其目标是,对于每个网站页面,它返回一定数量的按ID排序的对象。

我的问题比较简单,但是更容易举例说明。假设用户选择在第 0 页上每页显示 20 个对象。API 将从 mongoDB 集合中返回前 20 个对象(0 到 19)。第 2 页包含 20 将返回按 ID 排序的接下来 20 个对象(对象 20 到 39)。

现在代码如下所示:

 var page = (req.query.page) ? parseInt(req.query.page) : 0;
var qtd = (req.query.qtt) ? parseInt(req.query.qtt) : 20;
var min_value = page * qtd;
var max_value =( page + 1 ) * qtd - 1;

Order.find({}, {skip:min_value,limit:max_value}, function(err,orders) {
if (err) {
res.json({
status: "error",
message: err,
});
}
res.json({
status: "success",
message: "Orders retrieved successfully",
data: orders
});
});
};

我的问题是,为什么我不断收到“将 header 发送到客户端后无法设置 header ”的信息,以及如何对查询与限制和跳过进行排序。

最佳答案

您之所以收到此错误,是因为每当发生错误时,您的 if (err) 就会被调用,它将 response 发送到客户端,然后在 if 条件 res.json() 被调用后再次调用,这会抛出错误,因为 response header 已经在上面的 if 条件中发送。你可以这样做,将 else 与 if 条件一起使用。

var page = (req.query.page) ? parseInt(req.query.page) : 0;
var qtd = (req.query.qtt) ? parseInt(req.query.qtt) : 20;
var min_value = page * qtd;
var max_value =( page + 1 ) * qtd - 1;

Order.find({}, {skip:min_value,limit:max_value}, function(err,orders) {
if (err) {
res.json({
status: "error",
message: err,
});
}
else{
res.json({
status: "success",
message: "Orders retrieved successfully",
data: orders
});

}

});
};

关于node.js - NodeJS mongodb查询ERR_HTTP_HEADERS_SENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59108264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com