2017-11-01 5 views
0

내 모델 'users'의 sequelize를 사용하고 있으며 고유 한 유효성 검사가있는 'email'필드가 있습니다. 그러나 이전 등록 정보와 동일한 전자 메일을 사용하여 새 등록을 만들려고하면 유효성 검사가 계속되고 계속 허용되지 않습니다. 이것은 버그입니까? 고유 한 유효성 검사에는이 매개 변수에 대한 특정 매개 변수가 필요하거나 이런 식으로 작동해야합니까? 모델Sequelize : 삭제 된 소프트 레지스터를 사용한 고유 한 유효성 확인

이메일 :

email: {  
    type: Sequelize.STRING(191), 
    allowNull: false, 
    unique: { 
     msg: 'Email já cadastrado.' 
    },  
    validate: { 
     isEmail: { 
      msg: 'Formato de email inválido.' 
     }, 
     notEmpty:{ 
      msg: 'Email deve ser informado.' 
     } 
    } 
} 

내가 사용하고 sequelize의 버전은 다음과 같습니다 4.17.2

답변

0

이것은 버그가 아닙니다 - 그것은 데이터베이스 테이블에 고유 인덱스를 시행한다. "소프트"삭제는 레코드를 삭제 된 것으로 표시하지만 (예 : isDeleted=true) 실제로 데이터베이스 테이블에서 제거되지는 않습니다. 으로 고유 한 열에 중복 값을 만들 수 있다고 가정하면 충돌하는 이름으로 삭제 된 항목을 삭제하지 않은 경우 문제가 발생합니다.

당신이 가고있는 것처럼 보이는 기능은 가능하지만 데이터베이스 수준이 아닌 앱에서 프로그래밍 방식으로 논리를 적용해야합니다.

+0

알았어. 나는 있어야 할 길을 확실히 알고 싶었어. 명확한 설명을 해주셔서 감사합니다. –