Meteor:在客户端上使用PubSub和Collection.find(选项)之间的区别

时间:2015-05-28 06:00:01

标签: meteor

我见过开发人员订阅服务器发布的数据并传入选项来修改返回的游标。我也见过直接从客户端文件直接调用Collection.find(options)的开发人员。

两种方法之间有区别吗?如果是这样,推荐的方法是什么?

1 个答案:

答案 0 :(得分:0)

两者都是互补的。 为了完全理解Meteor如何处理数据,您必须忘记传统应用程序的工作方式(即请求数据并以静态形式获取它们(如json))。

TL; DR 不要忘记Meteor到处都是数据库

流星数据的反应性如下:

1)发布:您的MongoDB(服务器)中有一些数据要在客户端上可用,最后10篇文章总共500篇。所以,你会设置一个在服务器上发布如下:

//SERVER
Meteor.publish('lastTen', function() {
  return Articles.find({}, {limit: 10, sort: {date: -1}});
});

2)订阅:要在客户端上实际提供数据,您将在客户端上订阅此类出版物:

//CLIENT
Meteor.subscribe('lastTen');

3)在客户端上获取数据:您在2)中订阅的数据不会静态发送到客户端,而是在客户端数据库中复制(目前MiniMongo )。这就是为什么要获取数据并将其显示给用户,您将不得不在客户端查询此数据库:

//CLIENT
Articles.find({}, {sort: {date: 1}}); 

在这种情况下,您无需限制查询,因为您在客户端上只有10条记录。此外,您可以按其他顺序排序,因为它是数据库而非静态数据。

请注意,默认情况下会安装autopublish软件包以允许快速原型设计。它将在客户端上发布所有数据,因此您不需要任何发布/订阅机制,这可能会令人困惑。