[英]Node.js postman infinite request time(*no errors and database is updated fine) on PUT request
我已经被困在这个问题上太久了,无法找到我的错误在哪里,我正在通过 express 使用 node.js 制作一个 API,所有 Restful 函数对我来说都很好,除了更新卡在邮递员“发送”上请求”虽然数据库更新没有问题,但我怀疑错误在响应中的某个地方,但我发誓我已经尝试了想到的每种组合以使响应无济于事。 这是我的代码:
在路由器中
router.put('/:id', hlpJWT.authenticateToken, ctrProfile.updateInfo);
在控制器中
updateInfo = async function (req, res, next) {
const input = {
name: req.body.name,
password: await srvAuth.cryptPass(req.body.password),
..., // other input fields
};
let user = await srvProfile.updateProfile(input);
if (user) res.json(user);
else {
res.status(404);
res.json({ error: "user not found" });
}
};
在服务中
updateProfile = function (input) {
return new Promise((resolve, reject) => {
query(
"UPDATE users SET ? WHERE ?",
[
{
name: input.name,
... // more input fields
},
{ user_id: input.id },
],
function (error, result) {
if (error) {
return reject(error);
}
return resolve(result);
}
);
});
};
提前感谢任何愿意提供帮助的人
更新:最终我刚刚更新以表达 v5 并且它在那里工作正常,所以肯定是错误处理导致它,但我从来没有弄清楚具体是什么。
听起来您对此请求有一个未处理的错误,这会阻止将响应发送给您的客户,在本例中为 Postman。 可能是密码创建或用户更新触发了这种情况。
如果你这样包装你的请求,我相信你的客户会得到回应:
try {
const password = await srvAuth.cryptPass(req.body.password);
const input = {
..., // input fields
password,
}
let user = await srvProfile.updateProfile(input);
if (user) {
res.json(user);
} else {
res.status(404);
res.json({error: 'user not found'});
}
} catch (e) {
res.status(500).json({error: e, message: 'internal server error'});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.