Meteor.users 合集
Meteor.users collection
我是 meteor 的新手,我读了很多书,但是我对 meteor.users 集合和使用它的最佳方式有点困惑。我对最佳实践指南的解释是 meteor.users 集合应该只用于管理 accounts.ui 包;电子邮件、密码和用户名。该指南指出配置文件不安全,是原始流星设计中的缺陷,不应使用。
所以我的问题是,如果我想创建一个包含名字、姓氏、年龄、地址、头像等内容的用户个人资料,我是否要创建一个单独的集合,如 'userProfile' 和 link 它使用 meteor.userid 或者我想以某种方式将它保存在 meteor.users 集合中
通常的做法是将用户个人资料信息(例如您所描述的那种)放入 Meteor.user().profile
。事实上,人们通常会做更多的事情,例如群组中的成员资格、postId 数组,以及各种各样的事情。保留一个单独的 1:1 配置文件 collection 是一种选择,但我没有理由这样做。相反,它使事情变得更加复杂。
更新:正如@jonatan 在评论中指出的那样,Meteor 指南现在在用户文档中 unrecommended the use of the profile field。
相反,他们建议将自定义用户信息存储为用户文档中的 top-level 键。这不仅更安全,而且性能更高,因为增量更新可以通过 DDP 在 top-level 键上发布,但在 sub-keys.
上发布
Meteor.user().profile
对于当前用户 总是auto-published 即使在 autopublish 包被删除之后也是如此。除非您明确设置发布,否则根本不会发布有关其他用户的信息。在这种情况下,必须注意只发布那些应该对其他用户可见的字段。例如,出于隐私考虑,您可能只想发布其他用户的 username
而不是他们的电子邮件地址。你会这样做:
Meteor.publish('otherUsers',function(){
return Meteor.users.find({},{ fields: { 'profile.username': 1 }});
});
您还可以根据以某种方式连接到当前用户来限制发布的其他用户集,以避免一直发布所有用户。
您还应该避免发布 services
密钥,其中包含有关用户的安全信息(例如:他们密码的 bcrypt)。正如@David Weldon 在评论中指出的那样,您不应该将其他安全信息放在配置文件中 和 您可能想要一个 deny 规则 用户从客户端修改自己的配置文件。
我是 meteor 的新手,我读了很多书,但是我对 meteor.users 集合和使用它的最佳方式有点困惑。我对最佳实践指南的解释是 meteor.users 集合应该只用于管理 accounts.ui 包;电子邮件、密码和用户名。该指南指出配置文件不安全,是原始流星设计中的缺陷,不应使用。
所以我的问题是,如果我想创建一个包含名字、姓氏、年龄、地址、头像等内容的用户个人资料,我是否要创建一个单独的集合,如 'userProfile' 和 link 它使用 meteor.userid 或者我想以某种方式将它保存在 meteor.users 集合中
通常的做法是将用户个人资料信息(例如您所描述的那种)放入 Meteor.user().profile
。事实上,人们通常会做更多的事情,例如群组中的成员资格、postId 数组,以及各种各样的事情。保留一个单独的 1:1 配置文件 collection 是一种选择,但我没有理由这样做。相反,它使事情变得更加复杂。
更新:正如@jonatan 在评论中指出的那样,Meteor 指南现在在用户文档中 unrecommended the use of the profile field。
相反,他们建议将自定义用户信息存储为用户文档中的 top-level 键。这不仅更安全,而且性能更高,因为增量更新可以通过 DDP 在 top-level 键上发布,但在 sub-keys.
上发布Meteor.user().profile
对于当前用户 总是auto-published 即使在 autopublish 包被删除之后也是如此。除非您明确设置发布,否则根本不会发布有关其他用户的信息。在这种情况下,必须注意只发布那些应该对其他用户可见的字段。例如,出于隐私考虑,您可能只想发布其他用户的 username
而不是他们的电子邮件地址。你会这样做:
Meteor.publish('otherUsers',function(){
return Meteor.users.find({},{ fields: { 'profile.username': 1 }});
});
您还可以根据以某种方式连接到当前用户来限制发布的其他用户集,以避免一直发布所有用户。
您还应该避免发布 services
密钥,其中包含有关用户的安全信息(例如:他们密码的 bcrypt)。正如@David Weldon 在评论中指出的那样,您不应该将其他安全信息放在配置文件中 和 您可能想要一个 deny 规则 用户从客户端修改自己的配置文件。