模型的路径“_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 失败

CastError:对于猫鼬中模型的路径“_id”处的值“findByName”,转换为 ObjectId 失败

CastError:对于猫鼬中模型的路径“_id”处的值“findByName”,转换为 ObjectId 失败