最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

运维笔记admin16浏览0评论

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

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

首先要提到的是,我对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');
    });
  }

`

我添加了这个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"});
  });
});

`

console.log(result)行应该在终端中打印一些结果,但它没有,所以它不会删除DB中的集合。

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

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

回答如下:

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

来自mongodb docs deleteOne:

返回:

  1. 包含以下内容的文档:如果操作以写入问题运行,则布尔值确认为true;如果禁用写入关注,则返回false
  2. deletedCount包含已删除文档的数量

从猫鼬docs

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

发布评论

评论列表(0)

  1. 暂无评论