0

发出发布请求时,我收到此错误:

UnhandledPromiseRejectionWarning:未处理的承诺拒绝。

如果有人可以解释为什么会发生这种情况,我将不胜感激:)谢谢

更新

因此,此代码成功发布。但是,当我取消注释验证代码时,我得到了同样的错误......

router.post("/", async (req, res) => {
  //let client = validate(req.body);

  //if (client.error) {
    //res.status(400).json(result.error);
    //return;
  //}

  let client = new Client(req.body);

  try {
    let savedClient = await client.save();
    res.location(`/${savedClient._id}`).status(201).json(savedClient);
  } catch (error) {
    res.status(500).json(savedClient.error);
  }
});
4

3 回答 3

1

我看不到您在哪里初始化savedClient,我认为您的错误在于您的捕获。您引用的对象 ( savedClient) 似乎不在范围内。

尝试这个:

router.post("/", async (req, res) => { 
  let client = new Client(req.body);
  try {
    let savedClient = await client.save();
    res.location(`/${savedClient._id}`).status(201).json(savedClient);
  } catch (error) {
    console.log(error)
    res.status(500).json(error);
  }
});
于 2021-10-14T16:14:38.973 回答
0

maybe

let savedClient = await client.save();
于 2021-10-13T16:15:15.433 回答
0

我认为应该是

...
} catch (error) {
    res.status(500).json(savedClient.error);
}

因为 promise 的拒绝错误应该被 try/catch 语句捕获。

于 2021-10-13T16:21:57.847 回答