MongoDB 문서가 유효성 검증에 실패한 이유를 어떻게 판별합니까?


13

MongoDB 문서 삽입이 유효성 검증에 실패한 이유를 어떻게 판별합니까? 내가 다시 얻는 것은 "문서가 유효성 검사에 실패했습니다"라는 writeError입니다.

(이것은 종종 발생하며 특정 예제에 대한 도움을 요청하는 대신 올바르게 디버깅하는 방법을 이해하고 싶습니다.)

답변:


10

MongoDB 3.2에서와 같이 문서 유효성 검증이 실패한 이유에 대한 피드백은 없습니다. 전체 유효성 검증 표현식은 현재 True ( "OK") 또는 False ( "Document failed validation")로 평가됩니다. 유효성 검사 동작은 validationAction(오류 / 경고) 및 validationLevel(엄격한 / 보통 / 해제) 구성 옵션 으로 조정할 수 있지만 유효성 검사 실패에 대한 추가 컨텍스트는 제공하지 않습니다.

보다 자세한 피드백을 원한다면 서버 측 검사에만 의존하는 것이 아니라 응용 프로그램에 유효성 검사 논리를 추가하는 것이 좋습니다. 서버 측 유효성 검사에서도 데이터베이스 서버로의 왕복을 최소화하고 최종 사용자에게보다 반응적인 피드백을 제공하기 위해 응용 프로그램 비즈니스 논리에서 많은 검사가 가장 잘 수행됩니다.

예를 들어 웹 응용 프로그램 (필수 필드, 필드 형식 등)에 대한 사용자 입력은 응용 프로그램에 제출하거나 데이터베이스에 삽입 / 업데이트하기 전에 브라우저에서 확인해야합니다.

그러나 데이터 품질을 보장하기 위해 여러 수준에서 유효성을 검사하는 것이 합리적이며 유효성 검사 오류를 진단하기위한 일부 컨텍스트가 매우 유용합니다. MongoDB 이슈 트래커에서보고 / 투표 할 수있는 관련 공개 기능 요청이 있습니다. SERVER-20547 : 작업이 문서 유효성 검사에 실패한 이유를 노출하십시오 .

자세한 내용은 문서 유효성 검사-1 부 : 문서에 대한 적절한 제어량 추가에 관심이있을 수 있습니다 . 여기에는 MongoDB 3.2에서와 같이 문서 유효성 검사의 일반적인 장단점이 강조되어 있으며 결과 validationAction및 기반 validationLevel옵션 에 대한 참조 테이블이 포함되어 있습니다.


2
감사! 여기에 아무것도 빠진 것이 아닌 것 같습니다. 우리는 실제로 응용 프로그램에서 대부분의 유효성 검사를 수행하지만 MongoDB 유효성 검사기로 저수준 검사를 수행합니다. 주로 소프트웨어 엔지니어 (및 자신)가 프로덕션에서 사용자 오류를 찾는 것이 아니라 개발 중에 버그를 생성하지 않도록합니다. JIRA를 투표했습니다. 건배!
Jonathan Wheeler

문제는 스키마 형식이 "반 표준"인데, 즉 MongoDB 확장을 사용하므로 표준 JSON 스키마 유효성 검사기를 사용하여 원인이 무엇인지 찾기가 여전히 어렵습니다.
Hendy Irawan

1
@HendyIrawan 예, MongoDB 데이터 형식의 JSON 스키마에 대한 몇 가지 확장 이 있으므로 엄격한 유효성 검사를 위해서는 추가 클라이언트 유효성 검사 또는 변환이 필요합니다. AJV (다른 JSON 스키마 유효성 검사기)mongo-schemer 를 기반으로하는 Node.js 와 같은 몇 가지 예 를 보았습니다 .
Stennie

1

물론 원래의 대답은 옳습니다 .DB에 도착하기 전에 유효성 검사를 처리하는 것이 절대적으로 가장 좋은 방법이지만 지금처럼 쫓아 내야하는 실제적인 문제로 스키마에서 유효성 검사를 일시적으로 제거한 다음 표시되는 내용을 볼 수 있습니다 컬렉션에서.

필드가 필요했지만 누락, 비어 있거나 누락 된 것으로 표시되면 검색 범위가 좁혀집니다. 데이터가 올바르게 보이면 스키마에 지정된 유효성 검사를 살펴보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.