删除错误。 MongooDB + Express。传入的参数必须是12个字节的单个字符串或24个十六进制字符的字符串

时间:2015-01-16 12:27:23

标签: javascript node.js mongodb express

使用mongodb和僧侣。 我试图删除记录,然后继续收到错误消息: 错误:传入的参数必须是12个字节的单个字符串或十六进制格式的24个十六进制字符的字符串 我试过的不同代码:

 router.get('/delete/:id', function(req, res) { 
    var db = req.db;
    var uid = req.params.id.toString();
    var collection = db.get('usercollection');
    collection.remove({"_id":uid}, function(err, result) { 
        if(result === 0){
            res.send("There was a problem delete the information to the database.");
        }
        else{
            res.location("list");
            res.send(res.redirect("list"));
        }
    });
    });
    module.exports = router;

这是玉文件

   List
ul
    each event, i in list
        li
            #{event.id} : #{event.text}
            a(href="/delete/#{event._id}") Delete

2 个答案:

答案 0 :(得分:0)

由于您将id作为字符串获取,因此您必须使用ObjectID(uid)将字符串转换为mongodb对象,因为" _id"只接受mongo对象。你可以试试这个

router.get('/delete/:id', function(req, res) { 
    var db = req.db;
    var uid = req.params.id.toString();
    var collection = db.get('usercollection');
    collection.remove({"_id":ObjectID(uid)}, function(err, result) { 
        if(result === 0){
            res.send("There was a problem delete the information to the database.");
        }
        else{
            res.location("list");
            res.send(res.redirect("list"));
        }
    });
    });
    module.exports = router;

答案 1 :(得分:-1)

链接自 Argument passed in must be a string of 24 hex characters - I think it is

就我而言,这有效:

var myId = JSON.parse(req.body.id);
    collection.findOne({'_id': ObjectID(myId)}, function(error,doc) {
    if (error) {
      callback(error);
    } else {
       callback(null, doc);
    }
});
相关问题