NodeJS .Remove()函数不适用于MongoDb [重复]

50pmv0ei  于 12个月前  发布在  Node.js
关注(0)|答案(2)|浏览(106)

此问题在此处已有答案

How do I remove documents using Node.js Mongoose?(24个回答)
8天前关闭
此帖子已于8天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
这是不断给我的错误,Contact.remove()不是一个函数。我想通过传递一个id来删除一个特定的联系人。

const DeleteContact = asyncHandler(async (req, res) => {

    const contact = await Contact.findById(req.params.id);
    if (!contact) {
       res.status(404)
       throw new Error("Contact not found");
    }
  
 
    await Contact.remove();
    res.status(200).json(contact);
});

字符串

sczxawaw

sczxawaw1#

如果您知道要删除的文档的_id,则应该使用Model.findByIdAndDelete(),如下所示:

const DeleteContact = asyncHandler(async (req, res) => {
   try{
      const contact = await Contact.findByIdAndDelete(req.params.id);
      if (!contact) {
         return res.status(400).json({
            message: 'Unable to delete. Contact not found.'
         })
      }
      res.status(200).json(contact);
   }catch(err){
      console.log(err);
      return res.status(500).json({
         message: 'Error on server.'
      })
   }
});

字符串

注意:如果你的asyncHandler写得很好,try/catch可能是不必要的,但我不想假设。

w6lpcovy

w6lpcovy2#

我会这样做:

const DeleteContact = asyncHandler(async (req, res) => {
  const contact = await Contact.findOneAndDelete({ _id: req.params.id });
  if (!contact) {
    res.status(404);
    throw new Error("Contact not found");
  }

  res.status(200).json(contact);
});

字符串
您的错误可能是因为使用delete而不是deleteOne,我认为他们最近更改了函数名称

相关问题