Meteor发布/订阅示例

时间:2018-01-10 11:17:45

标签: javascript meteor

我是Meteor的新手,只是想简单的发布/订阅样本工作!

服务器/ main.js

import { Meteor } from 'meteor/meteor';

Meteor.startup(() => {
   // code to run on server at startup
});

var ServerCollection = new Meteor.Collection("myCollection");
Meteor.publish("someData", function() {
   this.added('myCollection', 'myData', { name: "Bob" });
   this.ready();
});

的客户机/ main.js

import { Template } from 'meteor/templating';
import './main.html';

var ClientCollection = new Meteor.Collection("myCollection");
Meteor.subscribe("someData");
console.log( ClientCollection.find().fetch() ); // Outputs an empty array :(

结果我在客户端的控制台中得到一个空数组。 我也是在cloud9 vds上运行这个示例。 我不想向DB插入数据,只想将不敏感的数据发布到客户端。

有人可以帮助我,这个ez例子驱动mu nut也缺乏文档和示例:(

1 个答案:

答案 0 :(得分:0)

  

当您调用console.log()

时,数据尚未就绪

是的,我通过添加Tracker.autorun方法修复了它。 现在它似乎工作正常。

<强>的客户机/ main.js

import { Template } from 'meteor/templating';
import './main.html';

var ClientCollection = new Meteor.Collection("myCollection");
Tracker.autorun(() => {
   Meteor.subscribe("someData");
   console.log( ClientCollection.find().fetch() );
});
  

您可以从官方Meteor文档中引用页面,以获取有关如何处理Meteor订阅准备情况的更多信息。

这指的是Blaze模板,因此没有关于如何在客户端js中处理它的内容。无论如何,Meteor缺乏文档和示例,对于新用户来说也是压倒性的,并且社区支持不足,即使在简单问题的情况下也总是重定向到文档。就是这样。