Meteor的新手。我正在尝试显示来自mongoDB集合的数据,并希望迭代它以执行一些计算。
如下所述:
Employee = new Mongo.Collection("data");
Template.welcome.rendered = function() {
var employee = Employee.find({});
employee.forEach(function(emp){ console.log(emp.id); });
}
但是我得到一个空数组。如何处理这种情况?
(我可以把它放在' helper和subscriber部分',但我需要使用embedly执行一些jQuery操作。但是这个jQuery不能在这个帮助函数中工作。)
答案 0 :(得分:0)
首先你应该知道,当你申报Mongo时,最好使用相同的名字" employee"在构造函数中。
另外你应该注意到,使用最新版本的MeteorJS你应该使用 Template.name.onRendered()而不是渲染,这对于向后兼容性有效,但它会不推荐。
还有一件事。在ID之前不要忘记下划线: _id
试试这段代码,看看它是否有效:
Employee = new Mongo.Collection("employee");
Template.welcome.onRendered( function() {
var employee = Employee.find({});
employee.forEach(function(emp){ console.log(emp._id); });
}
答案 1 :(得分:0)
流星文档说
<块引用>在客户端,从页面加载到发布的数据从服务器到达之间会有一段时间,在此期间您的客户端集合将为空。
来源:https://docs.meteor.com/api/collections.html#Mongo-Collection-find
答案 2 :(得分:0)
尝试使用删除自动发布
meteor remove autopublish
。
在服务器端添加发布:
Meteor.publish('tasks',function(){
return Tasks.find({});
});
并在客户端添加订阅:
Template.todos.onRendered(() => {
this.state = new ReactiveDict();
Meteor.subscribe('tasks');
const tasksArr = Tasks.find({}).fetch();
});
如果您使用 Iron Route,请使用
Router.route('/todos', {
waitOn: function (){
return Meteor.subscribe('tasks');
},
action: function (){
this.render('todos_calendar');
}
});
本教程可能会有所帮助:https://www.meteor.com/tutorials/blaze/publish-and-subscribe