mongodb - 为什么 Mongoose 删除我数据库中最上面的项目,而不是与目标项目匹配的 id?

标签 mongodb express mongoose handlebars.js

很抱歉大家不断提出问题,但这个问题我不太明白。

我有一个按钮,可以激活下面的/post 命令,以通过 Mongoose 删除项目。但是,我发现它忽略了附加的 :id。

console.log 显示删除目标条目的正确 id,id 变量还显示正在定位的正确 id,但被删除的条目似乎是我列表中最上面的条目,而不是目标 ID。

下面是否有一些我没有看到的明显的东西可能会导致这种情况? server.js/下面发布:

app.post('/remove/team/:id', (req, res) => {
    console.log("Delete command received. " + req.params.id)
  var id = req.params.id;
  if(!ObjectID.isValid(id)) {
    return res.status(404).send();
  }
  Team.findOneAndRemove(id).then((team) => {
    if(!team) {
      return res.status(404).send();
    }
    res.render("deleteSuccess.hbs", {id});
  }).catch((e) => {
    res.status(400).send();
  });
});

一如既往,我们非常感谢您提供的任何帮助。感谢您抽出时间。

最佳答案

请运行此查询:-

Team.findOneAndRemove({ _id: id })
  .then()
  .catch()

findOneAndRemove 将条件作为第一个参数,而不仅仅是 id。

关于mongodb - 为什么 Mongoose 删除我数据库中最上面的项目,而不是与目标项目匹配的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55197200/

相关文章:

javascript - Express:在 Controller 中使用异步等待的问题

mongodb - Mongoose 外键

c# - 更新mongo文档整体或特定字段

mongodb - 将带有 python-eve 应用程序的 docker 容器连接到带有 mongodb 的 docker 容器

node.js - 如何使用node js更新mongodb集合中所有文档的_id?

node.js - 为什么 .find() 显示快速的 MongoDB 事务时间和慢的 node.js 事务时间,而 .findOne() 显示完全相反的情况?

MongoDB 选择了错误的索引

node.js - 使用 jwt 身份验证保护静态文件

javascript - Node.js 让变量等待分配,直到回调函数完成

node.js - Mongoose:CastError:在路径 "[object Object]"的值 "_id"转换为 ObjectId 失败