Reputation:
I am trying to delete records based on ID. I am sending the ID via the get verb and acessing it from req.params.id. My code isn't 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 realize I need to add "ObjectId" before req.params.id. However, concatenating is not working. I have this so far. 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);
});
});
Upvotes: 5
Views: 5196
Reputation: 509
By Id can be delete by passing the Id in string form , no json needs be passed.
db.users.removeById(req.params.id, function(err, docs) {
shall be the line that shall come in.
If you want to maintain the JSON syntax you nead to do something like
db.users.remove({'_id': new ObjectID(req.params.id)}, function(err, docs) {
may do it. ObjectID will depend on the driver you are using.
Upvotes: 2