使用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
答案 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);
}
});