0

这是我处理删除请求的代码的一部分,并且是为了验证它的另一个文件来处理授权

   router.delete("/:id", auth, (req, res) => {
          Contact.findById(req.params.id, (err, foundItem) => {
            if (foundItem) {
              if (foundItem.user.toString() !== req.user.user.id) {
                return res.status(401).json({ msg: "Not autherized" });
              } else {
                Contact.findByIdAndRemove(req.params.id);
                res.json({ msg: "successfully deleted" });
              }
            } else {
              return res.status(404).json({ msg: "Contact not found" });
            }
          });
        });
4

1 回答 1

0

问题是findByIdAndRemove()返回一个承诺,我忘了处理它,所以每当我使用它时,它都会显示 msg:“成功删除”,所以我要么必须使用 async 并等待,要么使用 then() 方法或使用findByIdAndRemove()的第二个参数 是一个函数,它接受 2 个参数errdeletedItem检查是否是错误,如果没有,那么我显示我的成功消息

router.delete("/:id", auth, (req, res) => {
  Contact.findById(req.params.id, (err, foundItem) => {
    if (foundItem) {
      if (foundItem.user.toString() !== req.user.user.id) {
        return res.status(401).json({ msg: "Not autherized" });
      } else {
        Contact.findByIdAndRemove(req.params.id, (err, deletedItem) => {
          if (deletedItem) {
            res.json({ msg: `successfully deleted ${deletedItem.name}` });
          } else {
            console.log(err);
            res.json({ msg: "check the console..." });
          }
        });
      }
    } else {
      return res.status(404).json({ msg: "Contact not found" });
    }
  });
});
于 2021-05-05T15:33:26.113 回答