如何在创建ObjectId时捕获错误

时间:2014-07-07 09:51:33

标签: node.js mongoose

我试图在我的node.js应用程序中使用路由中的参数创建一个带有mongoose的ObjectId。

如果我有这条路线:

/product/:id

我尝试创建我的ObjectId来查询我使用的产品集合

var o_id = moongose.Types.ObjectId(req.params.id);

但是如果路由的:id部分不是ObjectId字符串,只是一些随机文本我得到一个错误:

"Argument passed in must be a single String of 12 bytes or a string of 24 hex characters"

如何捕获此错误? 我试图用try {} catch(error){}包围o_id = moongose.Types.ObjectId(req.params.id)但是我在catch表达式中什么都没有。

1 个答案:

答案 0 :(得分:1)

最好的方法是使用正则表达式来测试你的表达式:

if(/[a-f0-9]{24}/.test(req.params.id)) {
   var o_id = moongose.Types.ObjectId(req.params.id);
}