0
因此,當用戶通過Google,Twitter等註冊時,名稱可能會重疊。在我的應用程序中,用戶名擁有唯一的索引。由於每當有人首次登錄時都會將新文檔放入集合中,因此有時唯一索引會失敗。對於註冊用戶的代碼是這樣的:當MongoDB上的唯一索引失敗時生成替代文件
module.exports.findOrCreateUser = (provider, id, data, done) ->
User.findByAuth provider, id, (err, user) ->
if err? then done err
else if user? then done null, user
else
user = new User
auth: [{id: id, provider: provider}]
name: data.name
email: data.email
user.save (err) ->
if err? then done err else done null, user
所以,我有兩個問題在這裏:
- 我如何檢查是否
err
是唯一索引錯誤? - 什麼是追加唯一後綴到用戶名最有效的方式?
如何爲用戶用於登錄的服務添加前綴/後綴?例如google_username,twitter_username,facebook_username,... – innoSPG
對於Q(1),我確定'err'應該包含一個錯誤代碼以及類似「重複鍵錯誤索引」的描述性消息。你應該記錄一次'err',以便知道。 –
@innoSPG:這是一個好主意。我從來沒想過這點。雖然我想避免他們用來登錄的服務的跡象... – Lanbo