Документ MongoDB удален локально, но не в MongoLab - PullRequest
0 голосов
/ 17 декабря 2018

Этот метод удаления 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 голосов
/ 17 декабря 2018

Изменили ли вы URI-соединение на MongoDB на mLab?Я думаю, что вы уже изменили его.

Пожалуйста, используйте mongodb://<dbuser>:<dbpassword>@ds12xxxx.mlab.com:27342/[database_name], а не локально 'mongodb://localhost/[database_name]'

Если вы изменили его, пожалуйста, используйте deleteOne https://mongoosejs.com/docs/api.html#model_Model.deleteOne, хорошо работает.

0 голосов
/ 17 декабря 2018

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