我是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也缺乏文档和示例:(
答案 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缺乏文档和示例,对于新用户来说也是压倒性的,并且社区支持不足,即使在简单问题的情况下也总是重定向到文档。就是这样。