繁体   English   中英

PUT 请求的 Node.js 邮递员无限请求时间(*没有错误并且数据库更新正常)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM