Meteor:通过 DDP 连接两个应用程序时,模板助手中没有来自远程集合的文档 [英] Meteor: No docs from remote collection in template helper when connecting two apps via DDP

查看:38
本文介绍了Meteor:通过 DDP 连接两个应用程序时,模板助手中没有来自远程集合的文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

通过 DDP.connect 连接两个 Meteor 应用程序需要以下步骤(据我所知):

  1. 在远程应用上发布集合
  2. 通过 DDP.connect 连接到远程应用
  3. 订阅远程集合(与是通过 DDP.connect 返回的)
  4. 创建一个新的 Mongo 集合
  5. 返回帮助文件中集合的文档
  6. 使用 {{each collectionName}} {{/each}} 显示模板(html 文件)中的文档

我有两个应用程序(一个远程直接连接到 MongoDB,另一个处理所有前端交互的小得多).我可以通过(第 2 步和第 3 步 - 代码在 lib 文件夹中名为 _connect.js 的文件中成功连接它们,以确保它在该文件夹中的任何其他代码之前执行):

if (Meteor.isServer) {如果(process.env.NODE_ENV === '发展'){//开发环境worker_host = '本地主机:4000';//作业工作主机的 IP 地址//连接到作业工作者远程 = DDP.connect(worker_host);}remote.subscribe('cards', function() {console.log('文档数:' + Cards.find().count());});}

当我使用 remote.subscribe 时,它还显示预期文档的数量.这是代码中唯一显示正确文档数的地方,其他地方都显示为 0.

卡片集合通过(步骤 1)正确发布到远程服务器(在端口 4000 上运行):

Meteor.publish('cards', function() {返回 Cards.find()});

第 4 步:我不确定该代码的确切位置.它当前位于 lib 文件夹中,因此该集合在客户端和服务器上都是已知的:

Cards = new Mongo.Collection('cards',remote);console.log('文档数:' + Cards.find().count());

执行此代码时始终显示 0 个文档.

但是,当我想访问模板助手中的相同(远程)集合时(第 5 步 - 文件位于 client 文件夹中):

Template.puzzle.helpers({卡片:函数(){console.log('文档数:' + Cards.find().count());返回 Cards.find();}});

在帮助程序代码中找不到任何文档.

由于上述原因,html 模板中(也在 client 文件夹中)什么都没有显示: