首页 > 解决方案 > PUT 请求工作正常,数据库正在更新,但我收到“错误 [ERR_HTTP_HEADERS_SENT]”

问题描述

我有一个看起来像这样的 put 请求:

router.put('/employees', (req, res, next) => {
      req.body.employees.forEach((employee) => {
        Employee
        .update(
          { _id: employee._id }, 
          { $set: { totalHours: 15 } 
        })
        .exec(
          (err, doc) => {
            if (err) {
              res.status(404).send(err);
            }
            else {
              res.status(200).send(doc);
            }
          }
        )
      })
    })

它应该将每个员工的 totalHours 属性更新为 15。它工作正常,除了在更新员工后我得到一个错误(错误 [ERR_HTTP_HEADERS_SENT]:在发送到客户端后无法设置标头)和节点崩溃。

标签: node.js

解决方案


您只能响应一次请求。

在您的情况下,您收到一个请求,遍历多个员工,然后在循环内响应请求:即每个员工一次。

您需要完成循环然后响应一次。


推荐阅读