使用Pub / Sub,如果我之前使用有限的字段集订阅了集合,如何添加其他字段?

时间:2015-04-20 19:32:42

标签: meteor

如果我订阅了

Meteor.publish("mypublish", function (status) {
    var foundOnServer = MyCollection.find({"status": status}, {fields: {_id: 1, status: 1, "name": 1}});
    return foundOnServer;
  });

并且我在表格中显示这些记录,然后我想让用户点击其中一个以显示记录的完整细节,现在我想显示更多之前没有发布到客户端,比如地址,城市,州等...我如何编写代码以便我可以获取新字段并将其放入本地minimongo集合中,考虑到记录已经在客户端。执行查找只返回客户端中已有的文档,没有我想要的额外字段。

编辑:我不知道DDP限制,因为一旦您订阅了嵌套结构中的字段,您就无法再从嵌套结构的该级别添加更多字段。 https://github.com/meteor/meteor/issues/998

1 个答案:

答案 0 :(得分:0)

为相应的子集编写另一个发布函数,并返回更多/所有字段。例如:

Meteor.publish('singlePost', function(postId) {
  check(postId, String);
  return Posts.find(postId);
});

当您点击帖子时,您可以订阅singlePost,这将发送该帖子的所有字段。关键的见解是文档将合并到客户端

因此,如果客户端已将{_id: 'x', message: 'hello'}置于minimongo中,并且您稍后发布{_id: 'x', color: 'blue'},则客户端将在其数据库中拥有{_id: 'x', message: 'hello', color: 'blue'}