我要建造我的node.js /快遞/ 貓鼬/護照應用,我想正確的架構設計爲用戶和帳戶。MongoDB的架構設計多個auth用戶帳戶
將有用戶從twitter和facebook以及本地帳戶登錄。在稍後階段,我希望用戶能夠將twitter和facebook與我的應用程序(甚至更多的外部帳戶)連接起來。
我想不出一個好的解決方案。以下是我正在考慮的選項:
1.擁有配置文件模型和帳戶模型。個人資料文檔代表唯一用戶,而帳戶提供用戶名和密碼(內部帳戶)或來自auth-provider(外部帳戶)的認證數據。一個配置文件必須至少有一個嵌套帳戶文檔。
var ExtAccountSchema = new Schema({
type: String, // eg. twitter, facebook, native
uid: String
});
var IntAccountSchema = new Schema({
username: String,
password: String
});
var ProfileSchema = new Schema({
firstname: String,
lastname: String,
email: String,
accounts: [Account] // Pushing all the accounts in there
});
我不喜歡它什麼都從不同的帳戶數據產生的不太一致帳戶文件和事實,我也很難找到合適的帳戶時,在我的用戶日誌(搜索UID和帳戶類型嵌套-.-文件)
2.Having所有數據單一模式
var ProfileSchema = new Schema({
firstname: String,
lastname: String,
email: String,
twitter-uid: String,
facebook-uid: String
password: String
});
嗯,這只是醜陋-.-可能更容易/更快地找到正確的帳戶數據,但它不是對媽媽很好intain。
有沒有更好的解決方案? 是否有最佳做法?
與關係數據庫不同,使用MongoDB最好的模式設計很大程度上取決於您如何訪問數據。您將如何使用帳戶數據,以及您將如何訪問它? –
我將使用帳戶數據與護照進行身份驗證。配置文件數據幾乎可以在每個頁面上以多用途的方式訪問。我將通過貓鼬ODM – Sven
訪問它。因此,只有在用戶登錄後才能訪問帳戶數據,並且一旦發生登錄,您將使用會話機制來跟蹤登錄。 (而不是每個頁面訪問需要帳戶數據。) –