NodeJS Express Api-在路由外部调用res.send可以工作,但是无论如何res.status都不起作用

时间:2018-10-21 14:57:28

标签: javascript node.js rest express

为了在我的快速路由页面中保持整洁,我在每个路由中都有一个本地函数,该函数将sql查询以及req和res对象一起传递。

这对于发送成功的结果并调用res.send可以正常工作。

我遇到的问题是,我似乎无法找到使res.status正常工作的方法,无论其语法只是超时,在控制台或前端中都不会出现任何错误

棘手的事情是,当它位于特定路径内时,它确实可以工作,但是错误消息似乎没有通过发送,而是只是空白的正文?

`async function queryDatabase(queryParam, req, res) {
    try {
        const cp = new sql.ConnectionPool(config);
        await cp.connect();
        let result = await cp.request().query(queryParam);
        cp.close();
        res.send(result.recordset);
    } catch (err) {
        res.statusMessage = `Database error: ${err}`;
        res.status(520);
    }
}`

2 个答案:

答案 0 :(得分:1)

res.status(520)仅在响应对象中设置状态值。它实际上并不发送响应。因此,要发送响应,您有几种选择。在Express的最新版本中,您可以使用以下快捷方式:

res.sendStatus(520);

这将设置状态并发送响应。

但是,您也可以在任何版本的Express中执行此操作:

res.status(520).end();

还要设置状态,然后发送响应。

答案 1 :(得分:0)

您应该结束回复,使用res.status(520).end()代替res.status(520)