【发布时间】:2020-12-17 01:46:35
【问题描述】:
我有一条路线/api/:id,其中:id 必须是ObjectId 类型。
因为以下是我正在运行的查询
const data = await Person.find({_id:req.params.id})
如果 :id 是 ObjectId 类型,它可以正常工作,但如果用户显式运行 api 让我们说 /api/anything,那么 Mongoose 会出错
CastError: 路径“_id”处的值“anything”转换为 ObjectId 失败
所以,我想检查req.params.id 是否属于ObjectId 类型,如果是,则执行进一步的操作。
这样的代码看起来像
if(checkObjectId(req.params.id)) {
const data = await Person.find({_id:req.params.id})
}
【问题讨论】:
-
也许这会有所帮助? stackoverflow.com/questions/13850819/…
-
我会将 express 参数正则表达式验证(例如
/api/:id(\d+))与匹配 ObjectId 的良好正则表达式结合起来,例如[a-f\d]{24}here。这意味着api/:id([a-f\d]{24})应该在这里做。
标签: javascript node.js mongoose