當新用戶嘗試在我目前申請註冊,驗證過程的一部分,是要檢查的數據庫(MongoDB的)的用戶名和電子郵件是否已被使用。這個驗證過程是我的應用程序邏輯的一部分。推薦的方法,以避免重複的用戶名在MongoDB中
我想知道是否有可能/最好嘗試保存用戶沒有這些驗證檢查,並讓DB檢測到錯誤(由於重複的電子郵件地址或用戶名),我會再處理。
如果是這樣,我怎麼能處理這些錯誤,這樣我可以處理每一個(用戶名和電子郵件)。東西的方式...
err := c.Database.C("users").Insert(&user);
if err != nil {
//check whether issue is with email or username or both
}
在所有誠實,這取決於你真正想在這裏做。屬性上的「唯一」索引會導致插入嘗試出現錯誤,如果這些值存在組合,則可以「處理」該錯誤。另一方面,如果您希望能夠解決「獨特」屬性,並可能對匹配執行某些操作或以其他方式「插入」新數據,則可以使用[「upsert」](http://docs.mongodb.org/手動/參考/方法/ db.collection.update /#upsert-option)行爲可能是你需要的。所以這一切都是關於你打算如何在發生「重複」時作出反應。 –
假設這兩個屬性是索引的,我沒有看到*,即在等待重複錯誤和手動驗證之間有很大區別。這裏需要考慮的一點是代碼結構的可讀性/邏輯性 - 爲什麼當您可以防止它首先發生時檢測/預期錯誤? – Lix
雖然可能忽略不計 - 我不得不兩次查看電子郵件是否存在用戶名,但我的思考很有效。 – tommyd456