2017-05-05 7 views
0

mongodbでは、スキーマ/属性/プロパティ/フィールドにインデックス{unique:true}を設定するのと同じくらい簡単です。ブックシェルフでは、knexを使用して一意のインデックスを指定できます。しかし、ユニークなキー違反があったかどうかはどうやってチェックしますか?たとえば、ユーザー名と電子メールを固有のキーとして設定し、誰かが同じユーザー名と電子メールで新しいレコードを作成すると、エラーが発生します。 Mongoでは、これはerr.code 11000を確認するのと同じくらい簡単です。bookshelfjsによるユニークなインデックス違反のチェック

データベースにクエリを行い、レコードが存在するかどうかを確認できますが、2つのクエリを実行する必要はありません。 (既存のユーザと挿入物のチェック)。

答えて

0

たとえば、ユーザー名と電子メールを固有のキーとして設定し、誰かが同じユーザー名と電子メールで新しいレコードを作成すると、エラーが発生します。 Mongoでは、これはerr.code 11000を確認するのと同じくらい簡単です。

PostgreSQLと同じ原則です。あなたはSQLSTATE23505を探しています。これはunique_violationです。

私はthis questionを投稿しました。bookshelf.jsのドキュメントには、このことが特に言及されていないためです。 this github issueによれば、エラー辞書にsqlState属性があります。これは、ノードのMySQLとPostgreSQLドライバが同じように動作すると仮定しています。

おそらくそれはerr.sqlstateでしょうか?

UNIQUE_VIOLATIONERRCODE_UNIQUE_VIOLATIONのようにも見えるかもしれませんが、それについてはわかりませんが、err.codeのように見えます。

関連する問題