1

我不明白 的概念Meteor.subscribe。它应该从服务器接收记录,并将其附加到具有相同名称的集合中,对吗?

[subscribe] 将对传入的属性进行排队,直到您在客户端上使用匹配的集合名称声明 Meteor.Collection。

那么,为什么文档中的示例使用不同的名称?allplayersplayer之间是什么关系?

Meteor.subscribe("allplayers");
...
// client queues incoming players records until ...
...
Players = new Meteor.Collection("players");
4

1 回答 1

3

有两个名字:

  • 集合的名称('players'在本例中)。
  • 订阅的名称('allplayers'在本例中)。

订阅是一种将记录放入客户端集合的方法。记录进入的这个集合的名称由this.set()相关Meteor.publish函数中的使用决定(在服务器端),但通常它只是在服务器端查询的集合的名称[1]。

许多订阅可以将数据存放到同一个集合中,因此订阅的名称当然不需要与集合的名称相对应。事实上,如果您正在对该集合进行相当简单的单一订阅,那么让它们相同可能只是一个好主意。

[1] 如果您在 中返回游标(例如return players.find();Meteor.publish,它会自动this.set(name)为您连接调用,name从服务器端players集合推断出在哪里。

于 2012-10-10T23:55:00.877 回答