在mongoose中通过id删除
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在mongoose中通过id删除相关的知识,希望对你有一定的参考价值。
我正在努力通过api从我的数据库中删除记录。
首先,我从API中获取完整记录,然后当记录没有以我想要的方式填充时,我可以选择在前端删除它。我传递了对象ID,并希望使用mongoose方法将其删除。但是,无论我如何通过id我似乎无法删除记录。
以下是删除路由的代码:
router.delete('/database/delete/', (req, res, next) => {
let id = 'ObjectId("'.concat(req.body.id).concat('")');
let id2 = req.body.id;
console.log(id, id2)
db.findByIdAndRemove(id).then((err, client) => {
console.log(client)
if (err) return res.status(500).send(err);
const response = {
msg: "Client removed",
success: true
}
return res.status(200).send(response);
})
})
正如你所看到我试图通过两种方式传递id,所以控制台日志输出:ObjectId("5a8ea050fe07b60eda004c6e")
和5a8ea050fe07b60eda004c6e
,都不会工作。我怎么解决这个问题?
答案
var mongoose = require("mongoose")
const ObjectId = mongoose.Types.ObjectId;
var id = ObjectId("5a8ea050fe07b60eda004c6e")
//for your case
let id2 = ObjectId(String(req.body.id))
console.log(typeof id) //it will show object
你正在做的是试图让你的id
看起来像ObjectId
。如果你检查typeof id
它将是字符串而不是对象,
以上是关于在mongoose中通过id删除的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Node.js 中通过 Mongoose 使用 dot(.) 进行查询以及如何添加空数组
应用Mongoose开发MongoDB控制器(controllers)