mongoose 模型没有通过 req.params.id 删除时,如何修复它的 deleteOne() 函数?

Rat*_*rty 5 javascript mongoose mongodb node.js

首先要提到的是,我对 Node.Js 和 MongoDB 完全陌生。

我正在使用 Node.Js 和 MongoDB 编写后端 API,它将处理来自前端的 GET、POST、DELETE 请求,非常简单。

我在使用 DELETE 功能时被卡住了。

这是我的posts.service.ts文件,其中包含此deletePost()函数,该函数将 postId 发送到后端app.js文件。

`

deletePost(postId: string) {
    this.http.delete('http://localhost:3000/api/posts/' + postId)
    .subscribe(() => {
      console.log(postId);
      console.log('Deleted');
    });
  }
Run Code Online (Sandbox Code Playgroud)

`

我添加了这个console.log(postId)来检查它是否真的包含实际的 postId 并发现它确实包含。我还通过检查 mongo shell 将其与 MongoDB 中的真实 Id 进行了匹配。

这是后端app.js文件中的delete()函数,它应该执行实际任务。

`

app.delete("/api/posts/:id", (req, res, next) => {
  Post.deleteOne({ _id: req.params.id }).then(result => {
    console.log(result);
    res.status(200).json({message: "Post deleted"});
  });
});
Run Code Online (Sandbox Code Playgroud)

`

执行console.log(结果)线应打印一些结果在终端,但它并没有,所以没有它在数据库中删除集合。

我在 Ubuntu 16.04 LTS 电脑上运行它。

一些线索将意味着很大的帮助。非常感谢您的努力。

Ash*_*shh 2

deleteOne不返回已删除的文档。它总是删除第一个匹配的文档,并用布尔值返回删除的文档数。

从 mongodb文档中删除One:

返回:

  1. 包含以下内容的文档: 如果操作在写关注下运行,则确认为 true;如果禁用写关注,则确认为 false

  2. deletedCount 包含已删除文档的数量

来自猫鼬文档

从集合中删除第一个符合条件的文档。行为类似于remove(),但最多删除一个文档,无论单个选项如何。