我不是一个后端开发人员,但我知道我周围的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]:发送到客户端后无法设置标头**错误。
1条答案
按热度按时间mwngjboj1#
您的代码似乎不包含任何错误。请更新
mongoose
版本,然后重试。