mongoose:[ERR_HTTP_HEADERS_SENT]:标头发送到客户端后无法设置

sigwle7e  于 2023-03-23  发布在  Go
关注(0)|答案(1)|浏览(134)

我不是一个后端开发人员,但我知道我周围的express和NodeJS的方式。这是我第一次使用MongoDB,我一直在这个问题上卡住,即使有多个问题和答案类似的问题,但没有一个对我有用。
我知道这个错误通常发生在你为一个请求向客户端发送多个响应时。下面是我的代码:

app.post('/myapitest', (req, res) => {
    switch (req.headers['type']) {
        case MY_TYPE.A:

            const connection_string = 'My MongoDB instance link;

            if (connection_string) {

                mongoose.connect(connection_string as string);
                mongoose.connection.once('connected', () => {
                    mongoose.connection.db.listCollections().toArray().then((collections) => {
                        mongoose.connection.close(() => {
                            return res.status(200).json(collections);
                        });
                    }).catch((err) => {
                        mongoose.connection.close(() => {
                            return res.status(400).json({ error: err.message, message: 'looks like something is wrong with connecting to the mongodb' });
                        });
                    });
                })
            } else {
                return res.status(401).send('POST request failed because connection_string is missing in headers or invalid.');
            }
            break;
        default:
            res.status(400).send('POST request failed because type is missing in headers or not supported.');
            break;
    }

根据我上面的代码,我知道它不会发送多个响应。我从 Postman 那里测试,当我启动项目并发送请求时,它会成功地从MongoDB获得响应。然后如果我再次发送请求,我会得到**[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置标头**错误。

mwngjboj

mwngjboj1#

您的代码似乎不包含任何错误。请更新mongoose版本,然后重试。

相关问题