我试图在我的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表达式中什么都没有。
答案 0 :(得分:1)
最好的方法是使用正则表达式来测试你的表达式:
if(/[a-f0-9]{24}/.test(req.params.id)) {
var o_id = moongose.Types.ObjectId(req.params.id);
}