我正在使用Meteor 1.0 这可能是一个常见的初学者错误,但我似乎无法找到解决方案。
当我要求服务器返回一个集合时,结果不会显示。但是,我的控制台日志向我展示了良好的效果。 这是客户助手:
Template.myProjectTips.helpers({ matchingProjects: function() { Meteor.call('searchNearProjects', function(error, result) { if (error) { console.log(error.reason); return; } else { var fields = [{}]; _.each(result, function(field) { fields = field; console.log('result: ' + fields.title); }); return fields; } }); }, });
有人能帮帮我吗?
答案 0 :(得分:1)
首先,你的方法应该返回一个游标,所以你应该删除实际遍历游标的.fetch()
以返回一个数组。 Mersor在Meteor中本地支持和提升。
Meteor.methods({
searchNearProjects: function() {
return Project.find({}, {sort: {createdAt: -1}, limit: 10});
}
});
同样在你的模板代码中,你正在替换你的数组,而应该填充它。但是,由于您正在使用实时光标,因此您也不需要进行所有_.each()
遍历。因此,你可以简单地做:
Template.myProjectTips.helpers({
matchingProjects: function() {
Meteor.call('searchNearProjects', function(error, result) {
if (error) {
console.log(error.reason);
return;
} else {
return result;
}
});
}
});
但对于像这样的非常简单的Mongo查询,您不应该使用Meteor.method
相反,你应该像这样发布和订阅:
服务器:
Meteor.publish(" nearProjects",function(){ return Project.find({},{sort:{createdAt:-1},limit:10}); });
客户端:
Meteor.subscribe("nearProjects");
Template.myProjectTips.helpers({
matchingProjects: function() {
return Project.find({}, {sort: {createdAt: -1}, limit: 10});
}
});
或者,如果您想要发布一些查找条件,您也可以将您的参数传递给您的订阅和发布函数。