Meteor Mongo 数据库设计用户帐户

Posted

技术标签:

【中文标题】Meteor Mongo 数据库设计用户帐户【英文标题】:Meteor Mongo database design user accounts 【发布时间】:2016-03-18 17:08:15 【问题描述】:

我正在使用 Meteor 构建一个网络应用程序,并且我正在使用 Meteor Accounts-password 包和 accounts-facebook 包来简化登录。用户有一些与他们相关的信息,例如电子邮件和密码,但我想在创建帐户后将更多信息与他们相关联。

我知道有两种方法可以做到这一点,我想知道该怎么做,因为我似乎无法在互联网上找到任何有关它的信息。

选项 1:

我在 Meteor.user.profile 对象中添加了所有附加信息(如用户名、显示名和其他内容)。这似乎是一个糟糕的解决方案,因为默认情况下用户可以访问配置文件对象中的所有内容,而我必须手动拒绝他们访问。

选项 2:

我创建了一个新的集合,即个人资料信息,并存储有关用户的所有其他数据,然后通过某个共享密钥将其绑定到 meteor.user 对象。这似乎也是一个糟糕的解决方案,因为我必须像在 SQL 中那样拆分我的数据,并且没有 mongodb 中嵌入文档的所有优势。

到目前为止,这是我的思考过程,我不知道如何继续。 哪个选项似乎是最好的方法,还是有更好的选项 3?

提前致谢。

【问题讨论】:

如果用户可以访问那种看似公开的信息,为什么会出现问题?另一种选择是在配置文件对象之外更新用户,在这种情况下,您可以选择是否发布该字段。 @forallepsilon 我可以更新 Meteor.user 对象中的任何内容吗?我可以提供一个字段,例如名为“附加数据”的字段,然后将我的所有数据存储在该字段的 json 对象中吗? 你可能现在测试了,是的!但是,您可能希望选择不同的变量名称。 user.additional-data将使仪表扣解释为减去。您可以使用 user['additional-data'] 访问它,但最好使用更好的名称。 @forallepsilon 是的,这只是一个示例名称。感谢您的帮助。 【参考方案1】:

感谢@forallepsilon,我发现您可以将任何数据写入您想要的用户对象。我之前认为用户对象已被锁定,您只能在配置文件字段中存储其他数据。

我将通过创建附加字段将我拥有的关于用户的附加数据存储在 Meteor.user 对象中。

【讨论】:

以上是关于Meteor Mongo 数据库设计用户帐户的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB / Meteor / 将 MONGO_URL 导出到已部署的应用程序

如何将meteor.js db 导入远程mongo

Mongo在Meteor Server上插入后如何等待观察者调用

如何将所有 Meteor Mongo 集合名称检索为 Javascript 数组?

Meteor 如何执行数据库迁移?

Mongo ID 到 Meteor Mongo ID