我正在为我的项目创建一个小API,但在将文档保存在MongoDB数据库中时遇到问题。
postRouter.get('/get/:skip/:limit', (req, res) => {
const {skip, limit} = req.params;
const query = Post.find().skip(skip).limit(limit).sort('-date');
query.exec((err, docs) => {
if (err) {
res.send({error: 'Something went wrong'});
}
res.json(docs);
});
});
每次我执行GET请求时,都会收到“发送后无法设置标题”。如何修复我的代码?
答案 0 :(得分:1)
在执行res.send()之后,您需要确保这是要发送给客户端的最后一件事。
postRouter.get('/get/:skip/:limit', (req, res) => {
const {skip, limit} = req.params;
const query = Post.find().skip(skip).limit(limit).sort('-date');
query.exec((err, docs) => {
if (err) {
return res.send({error: 'Something went wrong'});
}
res.json(docs);
});
});
或
postRouter.get('/get/:skip/:limit', (req, res) => {
const {skip, limit} = req.params;
const query = Post.find().skip(skip).limit(limit).sort('-date');
query.exec((err, docs) => {
if (err) {
res.send({error: 'Something went wrong'});
}else{
res.json(docs);
}
});
});
答案 1 :(得分:1)
问题似乎在这里:
if (err) {
res.send({error: 'Something went wrong'});
}
res.json(docs);
当err为true时,它将发回错误,然后掉落if并且也执行res.json()。
做
if (err) {
return res.send({error: 'Something went wrong'});
}
return res.json(docs);
但是现在您需要找出为什么err并非未定义的原因:)