【问题标题】:Meteor client / server side collections behaviourMeteor 客户端/服务器端集合行为
【发布时间】:2018-02-03 16:16:33
【问题描述】:

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

【问题讨论】:

    标签: meteor


    【解决方案1】:

    一个流星集合包含0-N个文档collection 可以是 managedunmanaged

    一个托管集合:

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

    一个非托管集合:

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

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

    最后,回答您的具体问题:是的,集合对任何地方所做的更改反应,无论是在您所在的客户端上、服务器上还是在其他人的客户端上发起的更改

    【讨论】:

      猜你喜欢
      • 2015-08-07
      • 2014-02-18
      • 2016-07-07
      • 1970-01-01
      • 2013-05-27
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多