2017-05-05 43 views
0

在mongodb中,它就像在schema/attribute/property /字段上設置索引{unique:true}一樣簡單。在書架中,您可以使用knex指定唯一的索引。但是,您如何檢查是否存在唯一的密鑰違規?例如,如果我設置用戶名,將電子郵件設置爲唯一的密鑰,並且有人使用相同的用戶名和電子郵件創建新記錄,則應該引發錯誤。在Mongo中,這與檢查err.code 11000一樣簡單。使用bookshelfjs檢查唯一索引違規

我可以查詢數據庫並檢查記錄是否存在,但我寧願不必做兩個查詢。 (檢查一個預先存在的用戶和插入)。

回答

0

例如,如果我設置用戶名,電子郵件爲唯一鍵,並且有人使用相同的用戶名和電子郵件創建新記錄,則應該引發錯誤。在Mongo中,這與檢查err.code 11000一樣簡單。

這與PostgreSQL的原理相同。您正在尋找SQLSTATE23505,這是unique_violation

我發佈了this question,因爲bookshelf.js的文檔顯然沒有提到這個。根據this github issue,您正在尋找錯誤字典中的sqlState屬性,假定節點的MySQL和PostgreSQL驅動程序表現相同。

推測這是err.sqlstate

它看起來像err.code也可能類似UNIQUE_VIOLATIONERRCODE_UNIQUE_VIOLATION太,但不確定。