Amy Glenn
Amy Glenn

Reputation: 129

Remove() does not work in mongodb?

I did a restful delete to remove a record by id.. It didn't return me any error, but the record isn't get removed in my collection

my route

app.delete('/api/genres/:id',function(req,res){
    var id = req.params._id;
    var genre = req.body;
    Genres.deleteGenre(id, function(err,genre){
        if(err){
            throw err;
        }
        res.json(genre)
    })
});

my model (I'm using mongoose)

//Delete Genre
module.exports.deleteGenre = function (id, callback) {
    var query = {_id: id};
    Genre.remove(query, callback);
}

it even return ok status with

{"ok":1,"n":0}

Upvotes: 1

Views: 1707

Answers (2)

Soni Pandey
Soni Pandey

Reputation: 514

app.delete('/api/genres/:id',function(req,res){
    var id = req.params.id;
    Genres.deleteGenre(id, function(err,genre){
        if(err){
            throw err;
        }
        res.json(genre)
    })
});

//Delete Genre
module.exports.deleteGenre = function (id, callback) {
    var query = {_id: id};
    //use this to findByIdAndRemove in mongoose, it will work
    Genre.findByIdAndRemove(query, callback);
}

you don't need to take anything in var genre = req.body Try this!!!

Happy Coding!!!

Upvotes: 2

murnax
murnax

Reputation: 1222

use findById to get the document first then you will be able to remove them

Genre.findById(req.params.id, function(err, genre){
    if(err) { return res.send(500, err); }

    genre.remove(function(err){
        if(err) { return res.send(500, err); }
        return res.send(204);
    });
});

Upvotes: 1

Related Questions