保证不会 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(…, …)
.
我正在构建一个使用猫鼬访问数据库的快速路由器。我目前的问题依赖于这段代码:
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(…, …)
.