2014-09-08 3 views
0

MongoDb와 상호 작용하기 위해 mongoose를 사용하는 간단한 응용 프로그램을 만들고 있으며 고유 한 유효성 검사 오류 처리가 많이 신경 쓰였습니다. 이메일에 대한 true 및 중복 이메일 주소를 새 문서가 입력되면, 내가받을 오류는 다음과 같습니다 : 위의 스키마에서Mongoose, MongoError hanlding

UserSchema = new Schema({ 
         email: {type:String, required: true, unique: true, trim: true, match: [emailRegex, 'Email format is invalid']}, 
         hashedPassword: {type: String, default: ''}, 
         salt: {type: String, required: true, unique:true} 

        } 
); 

, 나는 독특한이 걸릴 위의

{ [MongoError: insertDocument :: caused by :: 11000 E11000 duplic 
ndex: testdb.users.$email_1 dup key: { : "[email protected] 
    name: 'MongoError', 
    code: 11000, 
    err: 'insertDocument :: caused by :: 11000 E11000 duplicate key 
estdb.users.$email_1 dup key: { : "[email protected]" }' } 

오류 객체 클라이언트에게 다시 표시하려면 정보를 추출하는 꽤 노력, 내 질문은 : 어쨌든 validationError 대신 사용하는 것이 더 직관적이고 간단합니까?

나는 사용자 지정 경로 유효성 검사도 고려해 봤지만 가능하면 기본 제공 기능을 사용하는 것이 좋습니다.

많은 감사,

+0

나는 지금 정확한 상황을 겪고 있습니다. 그리고 최선의 방법은 오류 필드에 정규식을 적용하는 것입니다. 즉, @wdberkeley에는 진실이 있습니다. 중복 키에 대한 오류 코드는 상수 인 것으로 보이며 인덱스 이름에서 키 (필드)를 추출하기가 어려워야합니다. – jhenriquez

답변

1

정말로. 이 오류는 전자 메일 필드의 고유 한 키 위반이며 MongoDB에서 방출됩니다. 유효성 검사 오류로 만들기 위해 유효성 검사 기능은 자체적으로 고유 한 키 위반을 발견해야합니다. 당신은 자신 고유 키 위반을 확인할 수 있도록

  1. 쿼리 MongoDB를가, 위의 오류가 발생하고, 구문 분석의 모든 email들 기억 해요 validationError
  2. 로 : 유효성 검사 기능이 일어날 수 두 가지 방법이 기본적으로 있습니다

첫 번째 메서드는 구문 분석을 유효성 검사 함수로 푸시하고 추가 MongoDB 쿼리를 사용하여 이득을 얻지 않습니다. 두 번째는 의미가 없습니다.

필요한 유용한 형식으로 오류를 구문 분석하는 함수를 작성하십시오. 한 번만 작성하고 테스트해야합니다.

0

또 다른 가능성은 중복 키 오류를 유효성 검사로 변환하는 엄마 모듈을 사용하는 것입니다.

이 사람은 내가 코드를 읽을 적이 mongoose-unique-validator

라고하지만 내 생각 엔 그것은 단지를 포맷하기 위해 오류를 구문 분석이다.

또한 성능을 살펴보면 성능에 영향을 미칠 가능성이 큽니다.

관련 문제