2014-10-23 1 views
2

을 잡으려고하지 않는 것 : 어떤 이유워터는 고유 제한 조건을 SailsJS에서는

email: { type: 'email', unique: true} 

, 워터 중복을 잡으려고하지 않습니다,하지만 물론 몽고는 않습니다 . Mongo 오류가 발생하지만 Waterline은 WLValidationError를 사용하여 오류를 catch하지 않습니다.

누구든지이 오류가 있습니까? WLValidationError가 작동하지 않는 것 같습니다.

감사합니다.

+2

어떻게 모든 값의 노하우를 수선해야합니까? 상상해보십시오 하나 이상의 인스턴스가 실행 중 ... 그 오류를 잡아 그에 따라 대응해야합니다. –

+2

mongo가 오류로 응답하면 Waterline이 오류를 파악하고 오류를 정상적으로 처리한다고 가정했습니다. 그것은 다른 데이터베이스 수준의 오류와 정확하게 같은 것 같습니다. 대신, 중복 키에, 그냥 mongo 오류를 반환합니다. 모델을 정의 할 때 흘수선이 필드의 "고유 한"속성을 허용하고 고유성을 처리하는 방법을 알 수 있으므로 가정했습니다. 그것은 불완전한 특징처럼 보입니다. – Tyguy7

답변

1

나는이 문제도 극복하기 위해 사용자 모델에 추가했습니다. 이 구현이 마음에 들지 않지만 다른 것은 없었을 때 나를 위해 일했습니다. 여기

beforeCreate: function(values, cb) { 
    User.findOne({email : values.email}, function(err, user){ 
     if(user){ 
      return cb('E-mail address already existis'); 
     } else { 
      cb(); 
     } 
    }); 
} 

문서 :

https://github.com/balderdashy/waterline#lifecycle-callbacks