【发布时间】:2015-12-27 11:34:53
【问题描述】:
我显然不了解发布/订阅系统。
我删除了不安全/自动发布的包。
在我的 server/publish.js 我有:
Meteor.publish("profiles", function () {
return Meteor.users.find({}, {
profile: 1,
status: 1,
services: 0
});
});
在我的 client/lib/collection.js 我有:
Meteor.subscribe("profiles");
Profiles = new Mongo.Collection("profiles");
现在,我期望在客户端上有一个 Profiles 集合,它只包含用户文档的配置文件和状态部分,不包含服务部分(其中包含电子邮件等证明信息)。
但是,在客户端,Profiles 集合是空的,而 Meteor.users() 是可用的并且其中包含所有内容,因此知道如何打开控制台的任何人都可以看到有关所有用户的私人数据...
有人知道我在这里做错了什么吗?
编辑:有趣的是,当我完全删除发布配置文件时,在客户端 Meteor.users 中只有当前用户,并且只有 profile 部分。现在我完全糊涂了。
【问题讨论】:
-
如果用户已登录,无论发生什么情况,数据都会发布到客户端(仅该用户的数据)。您的发布方法按预期工作。简而言之,用户自己的数据是由流星自动发布的。
-
我不明白你的回答?你读过我的问题吗?当 a) 客户端上的 Profiles 集合为空并且 b) 客户端上的 Meteor.users() 集合具有所有客户端及其私有数据时,我的发布如何正常工作?
-
Meteor.users().find() 返回客户端订阅的文档。如果您删除自动发布,则通常不会获取数据。您可能有一些其他代码负责。
-
说真的,我不知道你在说什么......
-
好吧,也许我没能解释你的问题。请原谅我这些
irrelevant suggestions
标签: meteor