我显然不了解发布/订阅系统。
我删除了不安全/自动发布的软件包。
在我的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
部分。现在我完全糊涂了。
答案 0 :(得分:1)
UPS,Meteor .find
语法与标准mongodb .find
语法略有不同。我需要添加"fileds"
关键字,然后按预期工作。
(差不多,因为我的个人资料集合在客户端上仍然是空的??)
Meteor.publish("profiles", function () {
return Meteor.users.find({}, {
fields: {
"services": 0
}
});
});
编辑:好的,多亏了Thai Tran我终于意识到实际上我DID误解了发布/订阅系统。我错误地认为发布"名称"在服务器上将是客户端上的集合名称。现在,我了解它是如何工作的,很清楚为什么我的个人资料集合是空的。