5

我正在尝试根据 ID 删除记录。我通过 get 动词发送 ID 并从 req.params.id 访问它。我的代码不起作用。我究竟做错了什么?

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

我意识到我需要在 req.params.id 之前添加“ObjectId”。但是,连接不起作用。到目前为止我有这个。有没有别的办法:

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

这有效:

// 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

2 回答 2

8

我使用这个访问它:

db.ObjectId(req.params.id)
于 2014-06-29T15:46:13.413 回答
2

可以通过传递字符串形式的Id来删除ById,不需要传递json。

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

应该是进来的线。

如果您想维护 JSON 语法,您需要执行类似的操作

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

可以做到。ObjectID 将取决于您使用的驱动程序。

于 2014-06-15T20:05:37.363 回答