【问题标题】:Express mongoose Query cannot set headersExpress mongoose Query 无法设置标头
【发布时间】:2021-01-03 10:52:22
【问题描述】:

有谁知道为什么这段代码给了我错误:“在发送到客户端后无法设置标题”? 我的 Mongoose 查询有问题吗? 谢谢你的帮助!!

router.post('/setriskbydate', (req, res) => {

    var username = req.body.username;
    var from = new Date(req.body.from);
    var to = new Date(req.body.to);

    var dates = getDates(from, to);

    User.findOne({ username: username }, (err, resp) => {
        if (err) {
            res.send(err);
        }
        if (resp) {
            var rideIds = resp.ride;
            for (let i = 0; i < rideIds.length; i++) {
                Ride.findOne({ _id: rideIds[i] }, (error, response) => {
                    if (error) {
                        res.send(error)
                    }
                    if (response) {
                        var busnumber = response.busnumber
                        var date = response.date.split('T')[0];
                        if (dates.includes(date)) {
                            console.log(response);
                            Ride.updateMany({ busnumber: busnumber, date: { "$regex": date }}, { risk: "high" }, (er, re) => {
                                if (er) {
                                    res.send(er);
                                }
                                if (re) {
                                    res.send(re);
                                }
                            })
                        }
                    }
                })

            }
        }
    })
})

【问题讨论】:

  • 即使在 res.send() 之后,您的代码也必须得到执行。尝试使用 return res.send();

标签: node.js express mongoose error-handling


【解决方案1】:

确保return所有响应语句,这样响应不会被多次发送,包括响应后无法再次设置的标头。

return res.send(err);

...

return res.send(re);

【讨论】:

  • 您好,感谢您的回答,但我不断收到错误消息,我的服务器出现故障...我在每个 res.send().. 之前添加了一个 return 语句。还有其他想法吗?
【解决方案2】:

我想我明白了。因为我在一个 for 循环中,所以我不能做 res.send() 因为函数在那时终止。我刚刚用其他东西替换了最后一个 res.send() 并且它起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-05
    • 2019-04-29
    • 2018-05-05
    • 2017-08-11
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多