MongoDB文档已在本地删除,但未在MongoLab上删除

时间:2018-12-17 10:29:50

标签: mongodb mongoose mlab

此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()没有任何改变。 完整的仓库位于https://github.com/ElAnonimo/booklist

2 个答案:

答案 0 :(得分: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));
  }
);

答案 1 :(得分:1)

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

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

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