从Node.js发送时,Web客户端未收到404

时间:2019-07-09 02:49:18

标签: node.js

当接收到不存在的记录请求时,我试图将状态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

1 个答案:

答案 0 :(得分:1)

因为您只是设置了响应的状态,但您从未将任何内容发送回客户端。

让我们向客户发送一些东西。

例如,发送一个json对象

return res.status(404).json({message: 'Null result sending 404'});

代替return res.status(404);