1
在一個項目上工作時遇到存儲不同護照策略(local,facebook,twitter)的用戶信息的問題。 在的遊戲內我UserSchema
有過這樣的樣子:多策略sigup用戶表的模式
User = mongoose.Schema(
{
"email" : { type : String , lowercase: true , trim : true , unique : true } ,
"providerId" : { type : String } ,
"providerName" : { type : String } ,
"hashedPassword" : { type : String } ,
"salt" : { type : String } ,
"strategy" : { type : String } ,
"created" : { type : Date , default : new Date().valueOf() } ,
"lastConnected" : { type : Date , default : new Date().valueOf() } ,
"accessToken" : { type : String } ,
"securityToken" : { type : String , default : "" } ,
"roles" : [ { type : String } ]
}
);
但唯一的電子郵件與電子郵件帶來的問題,因爲兩個用戶與Twitter stategy將空的電子郵件,這會導致錯誤。
我想過不要讓電子郵件獨一無二,但這會帶來很多問題(從第一眼看)。 我看到的一個解決方案是爲每個策略制定不同的模式,但這非常難以維護。
有沒有解決這個問題的其他方法。什麼是最佳實踐?
P.S.我發誓我GOOGLE了,但沒有找到任何解決方案
對於稀疏索引,兩個'null'條目仍然會違反唯一性約束。但是,如果在文檔爲空時(即,只有*當它具有適當的值時添加它),則不會將'email'屬性添加到文檔中,它將起作用。 – robertklep
@robertklep你的版本適合我。謝謝 –