Mongoose拒绝将有效字符串强制转换为ObjectId

时间:2017-01-05 12:31:40

标签: node.js mongodb mongoose casting objectid

我返回文档_id并将其用作req.params.id以便稍后获取该文档。

ObjectId.isValid()返回true,然后在ObjectId()FindFindOne中使用它会导致播放错误或

  

hex不是函数。

基本上,也可以直接从数据库中复制粘贴_id进行测试。

我使用的是mongoose ^ 4.7.6 ; _id看起来像是:586e30a597f85b69891df304

  

[堆栈追踪]

     

[CastError:强制转换为ObjectId失败   " 586e30a597f85b69891df304"在路径" _id" for model" Module"]         消息:'强制转换为ObjectId值" 586e30a597f85b69891df304"在路径" _id"对于模型"模块"',         名称:' CastError',         stringValue:'" 586e30a597f85b69891df304"',         善良:' ObjectId',         价值:' 586e30a597f85b69891df304',         路径:' _id',         原因:未定义,

2 个答案:

答案 0 :(得分:1)

这是Mongoose> = 4.7.3中的错误 https://github.com/Automattic/mongoose/issues/4867

bson包非常错误

答案 1 :(得分:0)

原来这是猫鼬版本中的一个错误。删除我的node_modules并使用设置为4.3.3的mongoose重新安装修复了此问题。