当接收到不存在的记录请求时,我试图将状态404发送回Web客户端。
我正在使用Express和MongoDB。经过Advanced Rest Client的测试。
代码:
app.get('/api/courses/:id', (req, res) =>
{
dbo.collection("courses").findOne({ id: parseInt(req.params.id) }, function(err, result) {
console.log(result);
if (err) return res.status(400).send(err);
if (!result) { console.log('Null result sending 404'); return res.status(404); }
res.send(result);
});
});
如果客户端发送一个有效的id:则按预期返回记录。
节点控制台:
{ _id: 5d23e6a8c922d263376442c1, id: 1, name: 'Course 1' }
客户:
{
"_id": "5d23e6a8c922d263376442c1",
"id": 1,
"name": "Course 1"
}
当客户端发送无效ID时:控制台显示消息已发送,但客户端一直等待直到我停止/重置服务器。
节点控制台:
null
Null result sending 404
答案 0 :(得分:1)
因为您只是设置了响应的状态,但您从未将任何内容发送回客户端。
让我们向客户发送一些东西。
例如,发送一个json对象
return res.status(404).json({message: 'Null result sending 404'});
代替return res.status(404);