我要建造我的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
访问它。因此,只有在用户登录后才能访问帐户数据,并且一旦发生登录,您将使用会话机制来跟踪登录。 (而不是每个页面访问需要帐户数据。) –