模型的路径“_id”处的值“”转换为 ObjectId 失败
Posted
技术标签:
【中文标题】模型的路径“_id”处的值“”转换为 ObjectId 失败【英文标题】:Cast to ObjectId failed for value " " at path "_id" for model 【发布时间】:2019-05-17 05:23:47 【问题描述】:我遇到了一个错误,我不明白它是如何发生的。如果我的路线按以下顺序排列:
我的控制器 obter_todos_precos 只是一个 console.log 并且没有使用任何模型,但我收到以下错误:
"message": "Cast to ObjectId failed for value \"preco\" at path \"_id\" for
model \"ZonaModel\""
我通过以这种方式更改路线的顺序找到了解决方案:
为什么我会有这种行为?
【问题讨论】:
可能文本preco
被解释为路由 :id_zona
的 id
尝试将(':id_zona')
更改为(':id_zona([1-9]\\d*)')
失踪的;之后不是问题。
喜欢复制和粘贴代码而不是打印屏幕
用 (':id_zona([1-9]\\d*)') 更改 id_zona 有效,但我的 id 是 ObjectId,所以它不是数字。
【参考方案1】:
路由器匹配它匹配的第一个路由
/:id_zona 和 /preco 路由到与preco
相同的路径也可以是id_zona
的值
所以当 /preco 高于它时,它可以工作, 而当 /:id_zona 在上面并且您尝试使用 /preco 时,路由匹配 /:id_zona 并且 id_zona 的值是 preco ,在您的控制器中希望是 ObjectId 类型
【讨论】:
在 ID 有效时使用正则表达式,但有没有更好的方法来避免这种情况,而不是使用正则表达式或更改我的路线顺序? 改变路线的顺序会更好以上是关于模型的路径“_id”处的值“”转换为 ObjectId 失败的主要内容,如果未能解决你的问题,请参考以下文章
CastError:模型的路径“_id”处的值“:id”转换为 ObjectId 失败
模型“Coach”的路径“_id”处的值“”转换为 ObjectId 失败
CastError:模型“Company”的路径“_id”处的值“...”转换为 ObjectId 失败
CastError:模型“Company”的路径“_id”处的值“...”转换为 ObjectId 失败