2017-11-23 23 views
0

NodeJSとMySqlでSequelizeを使用しています。Sequelize FindOrCreateは、追加のユニークキーを持つモデルでSequelizeUniqueContraintErrorを返します。

  1. 'ID' とユニークなプライマリキー - (最新バージョン)

    は私が持つユーザモデルを持っています。 'id'は自動インクリメントに設定されています。

  2. などのfirstName、lastNameの、電子メールなど一部のユーザの詳細
  3. 二つの追加のユニークなキー(sequelizeモデルで、データベースにユニークなとしてマーク) - 「ユーザー名」と「メール」

I 'findOrCreate'メソッドを使用して作成または参照しています。私のコードはレコードが存在しない場合は作成しますが、このレコードを見つけようとすると「UniqueConstraintError(ER_DUP_ENTRY) - > SequelizeUniqueContraintError」が「username」フィールドにスローされます。基本的に、findOrCreateはレコードを検索するのではなく、2回目のレコードを作成しようとします。

手動で検索を実行して見つけられない場合は、 を作成してこの問題を解決できました。しかし、私は 'findOrCreate'メソッドによって返されたフラグが必要です レコードが作成されたかどうかを判断するのに役立ちます。

誰かが助けてくれますか?

+0

私はすでに次のリンクを参照しています。 (私の質問は重複していません)https://stackoverflow.com/questions/35248117/sequelize-findorcreate-giving-me-a-sequelizeuniqueconstrainterrorror-validation-er – codejunkie

+0

これは同様の問題です - https://github.com/続ける/続ける/問題にする/ 5134 – codejunkie

答えて

0

'where'句のモデルの 'findOrCreate'メソッドにユニークキーを渡し、 'defaults'句の他のすべてのテーブル属性の値を設定することで、これを解決できました。

公式チュートリアルの例を参照してください。 here

関連する問題