javascript - 如何在 Meteor 中从服务器向客户端发送消息?

标签 javascript mongodb meteor meteor-blaze

我想从“server/main.js”中的服务器脚本向“client/main.js”中的客户端脚本发送消息。

我用发布/订阅尝试了一些事情,但我一定是做错了什么。运行 meteor 服务器的控制台因数以千计的错误消息而变得疯狂。

服务器

Meteor.publish("test", function () {
    this.ready();
    return 'some test';
  });

客户

Template.panel.onCreated(function loginOnCreated() {
  Tracker.autorun(function () {
    const handle = Meteor.subscribe('test');
    if(handle.ready()){
      alert('Done')
    }
  });
});

无论如何,我需要一个服务器方法来在客户端准备好时调用它。

原因:Template.panel.onCreated无法从Mongodb查询数据。它必须等待几秒钟。所以我想做的在客户端的 Template.panel.onCreated 中是不可能的。它必须等到 Mongo 准备就绪。

我该怎么做?

最佳答案

您应该将 Meteor.subscribe 放在 Tracker.autorun 之外。

我认为问题是因为 handle 是一个响应式(Reactive)数据源,所以当它改变 Tracker.autorun 里面的功能重新运行时,它再次订阅服务器,创建一个新句柄,新句柄导致函数再次运行。这一遍又一遍地循环并向您的控制台抛出许多错误消息

关于javascript - 如何在 Meteor 中从服务器向客户端发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40762423/

相关文章:

javascript - 包装一个节点值

javascript - 如何传递react.js数据来创建类似meteor.js或relay.js的容器

reactjs - React - 将变量插入路由路径

javascript - 在我的 meteor 应用程序上添加 Google map

javascript - LightSwitch HTML 客户端无需刷新整个页面即可自动运行查询

javascript - 如何用另一个数组的元素替换数组中的元素

javascript - JS : conditionally adding adding in the middle of an array?

Mongodb 查询(聚合框架)耗时极慢

javascript - 使用 Sails.js 进行慢速 MongoDB 查询

node.js - 更新/插入子文档时的 mongodb 性能