保证不会 return 获取任何数据 return

Promise not returning any data for fetch return

我正在构建一个使用猫鼬访问数据库的快速路由器。我目前的问题依赖于这段代码:

app.use("/authreset", (req, res) => {
    authenticator
        .resetPassword(
            req.body.username,
            req.body.password,
            req.body.token,
            req.body.type
        )
        .then((response, error) => {
            if (error) throw new Error(error);

            console.log('*****************');
            console.log(response);

            if (!response) {
                res.sendStatus(401);
                return;
            }
        })
        .catch(error => {
            console.log('*****************');
            console.log(error);
            if (error) throw new Error(error);
        });

});

resetPassword 使用以下猫鼬调用:

return UserModel
    .findByIdAndUpdate(user.id, data, { new: true })
    .exec();

出于某种原因,正在调用我的路线并且响应正常(在 console.log(response) 内检查 promise)。

我的问题是响应永远不会发送回客户端,导致提取调用超时。

为什么我的 promise 没有返回数据?

呃,你记录了 response,但你从未 send 它(或者至少用状态代码响应)?

您的代码应该更像

app.use("/authreset", (req, res) => {
    authenticator.resetPassword(
        req.body.username,
        req.body.password,
        req.body.token,
        req.body.type
    ).then(response => {
        console.log(response);

        if (!response) {
            return res.sendStatus(401);
        } else {
            return res.sendStatus(200); // <<<
        }
    }, error => {
        console.log(error);
        return res.sendStatus(500);
    });
});

请注意,then 回调永远不会被调用超过一个参数,因此您正在检查的 error 不会发生。在 catch 处理程序中,如果错误没有得到进一步处理,您永远不应该重新 throw 错误。还有我changed .then(…).catch(…) to the more fitting .then(…, …).