如果没有通过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:
返回:
- 包含以下内容的文档:如果操作以写入问题运行,则布尔值确认为true;如果禁用写入关注,则返回false
- deletedCount包含已删除文档的数量
从猫鼬docs
删除与集合中的条件匹配的第一个文档。行为类似于remove(),但无论单个选项如何,最多只删除一个文档。
如果没有通过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:
返回:
- 包含以下内容的文档:如果操作以写入问题运行,则布尔值确认为true;如果禁用写入关注,则返回false
- deletedCount包含已删除文档的数量
从猫鼬docs
删除与集合中的条件匹配的第一个文档。行为类似于remove(),但无论单个选项如何,最多只删除一个文档。