Meteor客户端/服务器端集合行为

时间:2017-08-25 15:04:04

标签: meteor

我对收藏品的可用性感到有些困惑,以及当我在不同的地方使用它们时会发生什么。我在/imports/api/clubs有一个集合。当我在Meteor.methods中使用它时,它运行正常。如果我然后将其导入模板文件/imports/ui/pages/new_club.js并插入一些内容,它是否只更新本地缓存?本地收藏是否有反应,即我的助手会重新开始吗?

1 个答案:

答案 0 :(得分:2)

Meteor 集合包含0-N 文档集合可以托管非托管

托管集合:

  • 通过MongoDB在服务器上保留。它将在客户端或服务器停止后继续存在。
  • 仅存在于服务器上,除非通过 autopublish 包或通过一个或多个出版物将其发布到客户端
  • 服务器自动拥有对集合中所有文档的读写权限
  • 出版物可用于限制文档的子集(包括哪些文档和哪些键)可供任何特定客户使用。
  • 服务器上的集合更改将通过Meteor的DDP协议自动异步传播到受影响的客户端,该协议通常通过WebSocket运行。
  • 如果从客户端对集合进行了更改,则客户端的视图会立即更新(称为“乐观更新”,Meteor的“延迟补偿”的一部分),然后服务器会尝试进行相同的更改。服务器版本最终“获胜”,因为来自服务器的更改会异步重新传播回受影响的客户端。

非托管集合:

  • 仅存在于客户端
  • 只能从客户端
  • 写入和读取
  • 不在客户端之间共享

在服务器端,Meteor可以访问完整的MongoDB API。在客户端,Meteor实现了“minimongo”,它提供了受限制的API。 Minimongo尤其缺少mongodb的聚合框架以及地理查询。

最后,回答您的具体问题:是的,收集是被动到任何地方所做的更改,无论是在您所在的客户端,服务器上,还是在其他人的客户端上启动