首页 > 解决方案 > 在 mongodb 检查错误类型时我得到了未定义

问题描述

当我在 /user/ 之后输入有效 ID 作为“ http://localhost:5000/api/profile/user/5ee9fbe0e82023146c8a5230 ”时,它会按预期返回结果。但是如果在用户提供无效 id 时发生错误,我需要检查错误类型。所以我故意输入了无效的 id 作为' http://localhost:5000/api/profile/user/5ee9fbe0e82023146c8a52304 '。现在它抛出错误为

MongooseError [CastError]: Cast to ObjectId failed for value "5ee9fbe0e82023146c8a52304" at path "user" for model "profile"
    at new CastError (D:\Programming\MERN\devConnector\node_modules\mongoose\lib\error\cast.js:29:11)
    at model.Query.exec (D:\Programming\MERN\devConnector\node_modules\mongoose\lib\query.js:4341:21)
    at model.Query.Query.then (D:\Programming\MERN\devConnector\node_modules\mongoose\lib\query.js:4433:15)
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
  messageFormat: undefined,
  stringValue: '"5ee9fbe0e82023146c8a52304"',
  kind: undefined,
  value: '5ee9fbe0e82023146c8a52304',
  path: 'user',
  reason: Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
      at new ObjectID (D:\Programming\MERN\devConnector\node_modules\bson\lib\bson\objectid.js:59:11)
      at castObjectId (D:\Programming\MERN\devConnector\node_modules\mongoose\lib\cast\objectid.js:25:12)
      at ObjectId.cast 
}

现在我想检查 error.kind 但没有定义。那里有什么问题。

标签: javascriptnode.jsmongodb

解决方案


根据文档kind-property 只为ValidatorErrors 填充。

CastError在您的情况下,您会收到其属性中未kind列出的类型错误: https ://mongoosejs.com/docs/api.html#mongoose_Mongoose-CastError

所以这似乎按预期工作。


推荐阅读