>  기사  >  백엔드 개발  >  github.com/go-playground/validator/v10 패키지의 필수_if 조합 관련 문제

github.com/go-playground/validator/v10 패키지의 필수_if 조합 관련 문제

WBOY
WBOY앞으로
2024-02-11 11:54:08408검색

github.com/go-playground/validator/v10 包中的 required_if 组合问题

php 편집자 Baicao가 github.com/go-playground/validator/v10 패키지의 필수_if 조합에 대한 질문을 소개하기 위해 왔습니다. 데이터 유효성 검사를 위해 이 패키지를 사용할 때 특정 필드의 값을 기반으로 다른 필드가 필요한지 여부를 결정해야 하는 경우가 있습니다. 이때 이 요구 사항을 충족하려면 필수_if 조합 규칙을 사용할 수 있습니다. 특정 조건에 따라 해당 분야가 필요한지 여부를 판단할 수 있어 매우 유연하고 실용적입니다. 이 글에서는 이 문제를 해결하기 위해 require_if 조합 규칙을 사용하는 방법을 자세히 설명합니다.

질문 내용

패키지 버전, 예. v9, v10:

패키지 버전: v10

질문, 문제 또는 개선 사항: 아래 코드를 실행하려고 할 때. 이 오류가 발생했는데 유선으로 연결되었습니다

출력

으아악

시연 또는 재현을 위한 코드 예:

으아악

코드 또는 유효성 검사 패키지에서 문제를 파악할 수 없습니다. 어떤 도움이라도 주시면 감사하겠습니다...

해결 방법

추가 omitempty 예: 으아악

playground의 전체 예(가져온 패키지 수의 크기로 인해 Playground에서는 안정적으로 실행되지 않습니다.)

문제는 required_if로 인해 라이브러리가 Person//Entity가 존재하는지 확인하지만 라이브러리는 여전히 빈 항목의 유효성을 검사한다는 것입니다. Person /Entity (실패합니다!) required_if 导致库检查 Person//Entity 是否存在,但库仍会验证空的 Person/Entity (并且失败!)。添加 omitempty 意味着库将忽略空的 struct;这提供了所需的结果,因为 required_if 将确保任何必需的 struct를 추가하면 라이브러리가 빈 struct를 무시한다는 의미입니다. 이는 required_if가 필수 struct가 비어 있지 않은지 확인하므로 원하는 결과를 제공합니다. 확인됩니다.)

또 다른 옵션은 포인터를 사용하는 것입니다(playground):

으아악

여기서의 차이점은 Entity 时,该值将为 nil (与具有默认值的 Entity 相反),这意味着 validator 없이는 유효성 검사가 불가능하다는 것입니다.

참고: v := validator.New(validator.WithRequiredStructEnabled())(문서에 따라)를 사용하는 것이 좋습니다.

위 내용은 github.com/go-playground/validator/v10 패키지의 필수_if 조합 관련 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제