2012-02-21 136 views
0

我想创建一个mongoID使用一个URI片段作为源。但是,除非URI确实包含格式正确的mongoId,否则我会得到下面的错误。错误处理node.js

我应该改变什么来允许_id创建而不会抛出错误,因为将它包装在try/catch块中并不是这样做的吗?

错误:

500 Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters in hex format

代码:

var _id = db.bson_serializer.ObjectID.createFromHexString(req.params.id); 

this.db.users.findById(_id, function(err, doc) { 
    if (!err && !!doc) { res.send(JSON.stringify(doc)); } else {res.send(JSON.stringify({error: "Not found"));} 
}); 

我使用mongoskin驱动程序。

+0

我很确定我明白你想要什么,但是你能显示一个示例URI吗? – 2012-02-21 17:24:08

+0

'/ users/nonvalidid' - 抛出错误。 '/ users/47cc67093475061e3d95369d' - 有效。 – Industrial 2012-02-21 17:26:09

回答

2

错误被扔在这条线:

var _id = db.bson_serializer.ObjectID.createFromHexString(req.params.id); 

如果包装在try/catch块它应该工作。

var _id = null 
try { 
    _id = db.bson_serializer.ObjectID.createFromHexString(req.params.id); 
} catch (err) { 
    res.send(JSON.stringify({error: "Not found"})); 
    return; 
} 

this.db.users.findById(_id, function(err, doc) { 
    if (!err) { 
    res.send(JSON.stringify(doc)); 
    } else { 
    res.send(JSON.stringify({error: err.message})); 
    } 
}); 

这是否适合您?