2017-04-05 11 views
0

기본 오류와 마찬가지로 모든 오류를 반환하도록이 조이 유효성 검사를 수행 할 수 없습니다. 그래서 여기joi : 사용자 정의 오류가 반환되지 않고 abortEarly가 false로 설정되었습니다.

나는 각 필드에 대한 개별 사용자 지정 오류를 설정 해요 : 다음

const schema = Joi.object().keys({ 
    a: Joi.string().error(new Error('must be string')), 
    b: Joi.number().error(new Error('must be number')) 
}); 

을 abortEarly가 false로 설정하여 유효성을 검사 할 때, 그것은 단지 그것을 발생합니다 첫 번째 오류를 반환합니다. 오류가 반환

Joi.validate({a: 1, b: false}, schema, {abortEarly: false}) 

이 같다

{ error: [Error: must be string], value: { a: 1, b: false }} 

은 어떤 방식으로 모든 오류를 반환해야 할 때.

나는 abortEarly를 잘못 사용하고 있습니까? 아니면 모든 사용자 정의 오류를 반환 할 때 프로세스를 수행해야합니까? 모든 응답을 미리 감사드립니다.

답변

0

글쎄, 나는 대답을 찾은 것 같아. 내 joi 라이브러리가 업데이트되지 않았으므로 10.2.x에서 10.4.1로 굴 렸습니다. 이전 버전에서 시도한 경우 작동하지 않는 설명서에서 본 일부 기능이있었습니다.

나는이 패턴을 사용하여 시도하고 작동합니다 그래서 같이

const schema = Joi.object().keys({ 
    a: Joi.string().error(() => 'must be string'), 
    b: Joi.number().error(() => 'must be number') 
}); 

:

{ [ValidationError: child "a" fails because [must be string]. child "b" fails because [must be number]] 
    isJoi: true, 
    name: 'ValidationError', 
    details: 
    [ { message: '"a" must be a string', 
     path: 'a', 
     type: 'string.base', 
     context: [Object] }, 
    { message: '"b" must be a number', 
     path: 'b', 
     type: 'number.base', 
     context: [Object] } ], 
    _object: { a: 1, b: false }, 
    annotate: [Function] } 

그럼 난 그냥 구문 분석거야하고 Error.message 모든 오류 메시지 및 프로세스를 얻을 수 있습니다.

'child "a" fails because [must be string]. child "b" fails because [must be number]'