node.js - NodeJS mongodb查询ERR_HTTP_HEADERS_SENT

标签 node.js mongodb express mongoose

我有一个带有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/

相关文章:

javascript - Mongodb 引用重复?

python - 如何解决 PyMongo 在查询中首先放置 MongoDB 分数并导致错误的问题

node.js - 如何在 Express.js 布局中使用 partials?

node.js - req.params.userId 未找到(路径设置为/:userId) Node. js

javascript - Gruntfile Jade 任务编译奇怪的模板

javascript - 密码破译错误

node.js - Visual Studio Code 使用 NVM 指定的 Node 版本

javascript - 使用 Angular 引入 Node 时出现的问题或如何在不使用 Angular-cli 的情况下创建平均应用程序

javascript - 将用户发布到其他集合时出现问题

javascript - axios post params没有被发送