我正在Meteor中构建一个依赖于数据库实时更新的应用程序。 Meteor定义示例的方式是在Template调用下调用数据库。我发现在处理中等大小的数据集时,这变得不切实际。我正在尝试将请求移动到服务器,并将结果传递回客户端。
我在SA上查看了similar questions,但没有立即找到答案。
这是我的服务器端功能:
Meteor.methods({
"getTest" : function() {
var res = Data.find({}, { sort : { time : -1 }, limit : 10 });
var r = res.fetch();
return (r);
}
});
客户方:
Template.matches._matches = function() {
var res= {};
Meteor.call("getTest", function (error, result) {
res = result;
});
return res;
}
我尝试过以上代码的变体 - 在回调函数中作为一个示例返回。据我所知,有一个回调使函数异步,所以它不能被调用onload(同步),必须从客户端调用。
我想通过服务器端的所有数据库查询来减轻前端负载。这在Meteor中有可能吗?
由于
答案 0 :(得分:3)
执行此操作的方法是使用订阅而不是远程方法调用。请参阅文档中的counts-by-room
example。因此,对于每个数据库调用,您都有一个仅存在于客户端的集合。然后,服务器使用set
和unset
确定集合中的记录。