Как удалить документы с помощью Node.js Mongoose? - PullRequest
264 голосов
/ 27 апреля 2011
FBFriendModel.find({
    id: 333
}, function (err, docs) {
    docs.remove(); //Remove all the documents that match!
});

Вышеуказанное не работает.Записи все еще там.

Может кто-нибудь починить?

Ответы [ 20 ]

11 голосов
/ 11 февраля 2016

Если вы ищете только один объект, который вы хотите удалить, вы можете использовать

Person.findOne({_id: req.params.id}, function (error, person){
        console.log("This object will get deleted " + person);
        person.remove();

    });

В этом примере Mongoose удалит на основе соответствующего req.params.id.

9 голосов
/ 23 марта 2014

.remove() работает как .find():

MyModel.remove({search: criteria}, function() {
    // removed.
});
7 голосов
/ 27 ноября 2015

Я предпочитаю запись обещания, где вам нужно, например:

Model.findOneAndRemove({_id:id})
    .then( doc => .... )
7 голосов
/ 27 сентября 2016

Для удаления документа я предпочитаю использовать Model.remove(conditions, [callback])

Пожалуйста, обратитесь к документации API для удаления: -

http://mongoosejs.com/docs/api.html#model_Model.remove

Для этого случая код будет:-

FBFriendModel.remove({ id : 333 }, function(err, callback){
console.log(‘Do Stuff’);
})

Если вы хотите удалить документы, не ожидая ответа от MongoDB, не передавайте обратный вызов, вам нужно вызвать exec для возвращенного запроса

var removeQuery = FBFriendModel.remove({id : 333 });
removeQuery.exec();
6 голосов
/ 01 августа 2014

Вы можете просто использовать запрос непосредственно в функции удаления, так:

FBFriendModel.remove({ id: 333}, function(err){});
5 голосов
/ 27 апреля 2016

Вы всегда можете использовать встроенную функцию Mongoose:

var id = req.params.friendId; //here you pass the id
    FBFriendModel
   .findByIdAndRemove(id)
   .exec()
   .then(function(doc) {
       return doc;
    }).catch(function(error) {
       throw error;
    });
4 голосов
/ 24 сентября 2016

Обновление: .remove() устарело, но оно работает для более старых версий

YourSchema.remove({
    foo: req.params.foo
}, function(err, _) {
    if (err) return res.send(err)
    res.json({
        message: `deleted ${ req.params.foo }`
    })
});
2 голосов
/ 22 февраля 2017

используя метод remove () вы можете удалить.

getLogout(data){
        return this.sessionModel
        .remove({session_id: data.sid})
        .exec()
        .then(data =>{
            return "signup successfully"
        })
    }
1 голос
/ 17 января 2018

Это сработало для меня, просто попробуйте это:

const id = req.params.id;
      YourSchema
      .remove({_id: id})
      .exec()
      .then(result => {
        res.status(200).json({
          message: 'deleted',
          request: {
            type: 'POST',
            url: 'http://localhost:3000/yourroutes/'
          }
        })
      })
      .catch(err => {
        res.status(500).json({
          error: err
        })
      });
0 голосов
/ 11 июня 2019
db.collection.remove(<query>,
 {
  justOne: <boolean>,
  writeConcern: <document>
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...