[英]Meteor.users collection
我是流星的新手,我读了很多书,但是我对meteor.users集合和使用它的最佳方法有些困惑。 我对最佳做法指南的解释是,meteor.users集合仅应用于管理account.ui包; 电子邮件,密码和用户名。 该指南指出,轮廓不安全,是原始流星设计中的缺陷,不应使用。
所以我的问题是,如果我想创建一个包含名字,姓氏,年龄,地址,头像等内容的用户个人资料,我是否要创建一个单独的集合(如“ userProfile”)并使用meteor.userid进行链接?假设以某种方式将其保留在meteor.users集合中
通常的做法是将用户配置文件信息(例如您要描述的类型Meteor.user().profile
放入Meteor.user().profile
。 实际上,人们通常会做更多的事情,例如组中的成员资格,postId数组,各种各样的事情。 保留单独的1:1概要文件集合是一种选择,但是我没有想到有这样做的根本原因。 相反,它使事情变得更加复杂。
更新 :正如@jonatan在评论中指出的那样,《流星指南》现在不建议在用户文档中使用配置文件字段 。
相反,他们建议将自定义用户信息存储为用户文档中的顶级密钥。 这不仅更安全,而且性能更高,因为增量更新可以通过DDP在顶级密钥上但在子密钥上发布。
Meteor.user().profile
总是自动发布的包自动发布已被删除后,即使当前用户 。 除非您明确设置发布,否则根本不会发布有关其他用户的信息。 在这种情况下,必须注意仅发布那些对其他用户应该可见的字段。 例如,出于隐私目的,您可能只想发布其他用户的username
,而不要发布其电子邮件地址。 您可以这样做:
Meteor.publish('otherUsers',function(){
return Meteor.users.find({},{ fields: { 'profile.username': 1 }});
});
您还可以基于其他用户以某种方式连接到当前用户的方式来限制其他用户的发布,以避免一直发布所有用户。
您还应该避免发布包含有关用户安全性信息的services
密钥(例如:用户密码的bcrypt)。 正如@David Weldon在评论中指出的那样,您也不应在配置文件中放置其他安全信息, 并且您可能希望拒绝用户修改客户端自身配置文件的规则 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.