【问题标题】:I got error while validating field in mongodb, nodejs验证 mongodb、nodejs 中的字段时出现错误
【发布时间】:2020-09-28 22:00:59
【问题描述】:

这些是我在模型中验证时从后端得到的错误,并在“err”变量中收到。如果我 console.log(err),那么它会显示以下错误。

Error [ValidationError]: employees validation failed: fullName: This field is required from model, email: This field is required from model
    at ValidationError.inspect (D:\Programming\MERN\CRUD\node_modules\mongoose\lib\error\validation.js:61:24)
    at formatValue (internal/util/inspect.js:703:31)
    at inspect (internal/util/inspect.js:272:10)
    at formatWithOptions (internal/util/inspect.js:1887:40)
    at Object.Console.<computed> (internal/console/constructor.js:284:10)
    at Object.log (internal/console/constructor.js:294:61)
    at handleValidationError (D:\Programming\MERN\CRUD\routes\/employeeRoute.js:46:13)
    at D:\Programming\MERN\CRUD\routes\/employeeRoute.js:33:17
    at D:\Programming\MERN\CRUD\node_modules\mongoose\lib\model.js:4915:16
    at D:\Programming\MERN\CRUD\node_modules\mongoose\lib\helpers\promiseOrCallback.js:16:11
    at D:\Programming\MERN\CRUD\node_modules\mongoose\lib\model.js:4938:21
    at D:\Programming\MERN\CRUD\node_modules\mongoose\lib\model.js:492:16
    at D:\Programming\MERN\CRUD\node_modules\kareem\index.js:246:48
    at next (D:\Programming\MERN\CRUD\node_modules\kareem\index.js:167:27)
    at next (D:\Programming\MERN\CRUD\node_modules\kareem\index.js:169:9)
    at Kareem.execPost (D:\Programming\MERN\CRUD\node_modules\kareem\index.js:217:3) {
  errors: {
    fullName: MongooseError [ValidatorError]: This field is required from model
        at new ValidatorError (D:\Programming\MERN\CRUD\node_modules\mongoose\lib\error\validator.js:29:11)
        at validate (D:\Programming\MERN\CRUD\node_modules\mongoose\lib\schematype.js:1178:13)
        at D:\Programming\MERN\CRUD\node_modules\mongoose\lib\schematype.js:1161:7
        at Array.forEach (<anonymous>)
        at SchemaString.SchemaType.doValidate (D:\Programming\MERN\CRUD\node_modules\mongoose\lib\schematype.js:1106:14)
        at D:\Programming\MERN\CRUD\node_modules\mongoose\lib\document.js:2378:18
        at processTicksAndRejections (internal/process/task_queues.js:79:11) {
      properties: [Object],
      kind: 'required',
      path: 'fullName',
      value: '',
      reason: undefined,
      [Symbol(mongoose:validatorError)]: true
    },
    email: MongooseError [ValidatorError]: This field is required from model
        at new ValidatorError (D:\Programming\MERN\CRUD\node_modules\mongoose\lib\error\validator.js:29:11)
        at validate (D:\Programming\MERN\CRUD\node_modules\mongoose\lib\schematype.js:1178:13)
        at D:\Programming\MERN\CRUD\node_modules\mongoose\lib\schematype.js:1161:7
        at Array.forEach (<anonymous>)
        at SchemaString.SchemaType.doValidate (D:\Programming\MERN\CRUD\node_modules\mongoose\lib\schematype.js:1106:14)
        at D:\Programming\MERN\CRUD\node_modules\mongoose\lib\document.js:2378:18
        at processTicksAndRejections (internal/process/task_queues.js:79:11) {
      properties: [Object],
      kind: 'required',
      path: 'email',
      value: '',
      reason: undefined,
      [Symbol(mongoose:validatorError)]: true
    }
  },
  _message: 'employees validation failed'
}

现在,如果我 console.log('err.errors.fullName.message')。它完美地工作。 但是如果有更多的键,很明显我们需要使用循环。因此,如果我尝试按如下方式遍历对象的键,则会引发以下错误。

for(field in err.errors){
.......
.......
}

错误是:

ReferenceError: field is not defined

这里有什么问题?

【问题讨论】:

  • for(let field in err.errors){

标签: node.js validation mongoose


【解决方案1】:

首先,您的后端不应该像上面提到的那样给出这种类型的错误响应。这必须类似于错误的 JSON 响应。例如

{ success: false, errors: [{fullName: "fullName is required"}] }

来回答你的问题。如果您想正确显示错误,您可以循环查看您可以通过err.errors 拍摄的错误

eg err.errors.forEach(error => console.log(error) )

但这又是一个非常错误的抛出验证错误的方法。要验证任何数据,您可以使用 joi、request-validator、validatorjs 等。哪个会给您一个完美的错误响应?为什么我要强调这一点,因为您要公开整个目录、文件、模型名称等。 我希望这可以帮助您解决您的问题

【讨论】:

    猜你喜欢
    • 2021-01-09
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多