Mongojs & Express - cannot be deleted by identifier

I am trying to delete records based on ID. I send the identifier via get get and accessing from req.params.id. My code is not working. What am I doing wrong?

//delete user
router.get('/deleteuser/:id', function(req, res){
    var db = req.db;
    db.users.remove({'_id':req.params.id}, function(err, docs) {
        if (err) return err;
        res.send(docs); // see results
    });
});

I understand that I need to add "ObjectId" before req.params.id. However, concatenation does not work. I still have it. Is there another way:

//delete user
router.get('/deleteuser/:id', function(req, res){
    var db = req.db;
    var objId = 'ObjectId("' + req.params.id + '")';
    console.log(objId);
    db.users.remove({"_id": objId}, function(err, docs) {
  //db.users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")});  works in mongo console
        if (err) return err;
        console.log(docs);
        res.send(docs);
    });
});

This worked:

//db.ObjectId(req.params.id)

router.get('/deleteuser/:id', function(req, res){
    var db = req.db;
    db.users.remove({"_id": db.ObjectId(req.params.id)}, function(err, docs) {  //db.users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")});
        if (err) return err;
        console.log(docs);
        res.send(docs);
    });
});
+4
source share
2 answers

I turned to him using this:

db.ObjectId(req.params.id)
+5
source

By identifier, you can delete, passing Id in string form, no need to pass json.

db.users.removeById(req.params.id, function(err, docs) {

there should be a line that should be included.

JSON, -

db.users.remove({'_id': new ObjectID(req.params.id)}, function(err, docs) {

. ObjectID .

+1

Source: https://habr.com/ru/post/1544665/


All Articles