【问题标题】:MongoDB document deleted locally but not on MongoLabMongoDB 文档在本地删除,但在 MongoLab 上没有
【发布时间】:2018-12-17 20:33:53
【问题描述】:

这个 Mongoose 删除方法似乎在本地使用 HttpRequester 可以正常工作

router.delete('/', (req, res) => {
    Book.findOneAndRemove({ title: req.body.title })
      .then(() => res.json({ 'book deleted': 'success' }))
      .catch(err => console.log('Couldn\'t delete book:', err));
  }
);

但 MongoLab 集合仍然显示文档。如何让它也被远程删除? findOneAndDelete() 没有任何区别。 完整的 repo 在https://github.com/ElAnonimo/booklist

【问题讨论】:

  • 您确定您的删除请求正在处理中

标签: mongodb mongoose mlab


【解决方案1】:

findOneAndRemove 之前有问题。

findByIdAndRemove 工作正常。

router.delete('/', (req, res) => {
    Book.findOne({ title: req.body.title })
      .then((doc) => if(doc)return Book.findByIdAndRemove(doc._id))
      .then(() => res.json({ 'book deleted': 'success' }))
      .catch(err => console.log('Couldn\'t delete book:', err));
  }
);

甚至更好,你可以这样做

router.delete('/', (req, res) => {
    Book.deleteOne({ title: req.body.title })
      .then(() => res.json({ 'book deleted': 'success' }))
      .catch(err => console.log('Couldn\'t delete book:', err));
  }
);

【讨论】:

  • 一旦您删除return 并重写该部分,前者将返回Cannot read property '_id' of null。后者不会删除远程文档。完整的 repo 位于github.com/ElAnonimo/booklist
  • 你能解释一下“远程文档”是什么意思吗?
  • 存储在 MongoLab 上的书。
  • 我一直在使用 mlab。 deleteOne 工作正常。你输入的url是否正确,用户mLab用户是否正确?
  • 如果你觉得这样的话,你可以签入 repo。我相信 uri 是正确的,我添加了一本书。
【解决方案2】:

您是否更改了与 mLab 上 MongoDB 的 URI 连接?我想你已经改变了它。

请务必使用mongodb://<dbuser>:<dbpassword>@ds12xxxx.mlab.com:27342/[database_name],而不是本地'mongodb://localhost/[database_name]'

如果你改了,请使用deleteOnehttps://mongoosejs.com/docs/api.html#model_Model.deleteOne,它运行良好。

【讨论】:

  • 使用的 URI 是远程 MongoLab 数据库的正确 URI。
  • @ElAnonimo 我已经从你的 github github.com/ElAnonimo/booklistdeleteOne 在你的数据库 mLab 上生成了一些书,当我成功删除你的书 3 时,deleteOne 正在工作
  • 我删除了第 3 本书,抱歉,现在我要删除第 4 本书
  • 我刚刚删除了第 4 本书
  • 您应该console.log(req.body.title),我认为您使用DELETE 方法的请求与body 存在问题。我已经通过 Postman getpostman.com 尝试调用 API delete 并且它正在工作。因为如果存在记录,deleteOne() 将不会在您的数据库中找到,所以您的 API 总是发送消息成功。也许对你有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 2021-03-03
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
相关资源
最近更新 更多