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

MongoDB document deleted locally but not on MongoLab

这个 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

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));
  }
);

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

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

如果你改过,请使用deleteOne https://mongoosejs.com/docs/api.html#model_Model.deleteOne,效果很好。