2017-11-01 10 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

これは、私はそうなっていた方法について確かにしたいと思った。明確化のおかげで本当に役立った。 –

関連する問題