所以,我试图做类似以下的事情:
if(Meteor.isServer){
Meteor.methods({connect_to_api: function(vars){
// get data from remote API
return data;
}});
}
if(Meteor.isClient){
Template.myTpl.content = function(){
Meteor.call('connect_to_api', vars, function(err,data){
Session.set('placeholder', data);
});
return Session.get('placeholder');
};
}
这似乎工作正常,但是,当然,现在在 0.5.9 中中断,因为 Session 对象已从服务器中删除。您现在如何创建一个反应式模板,该模板使用仅服务器(我们不想在客户端上加载的东西)方法调用并从该方法调用中获取数据。您不能将任何 Session 引用放在回调函数中,因为它在服务器上不存在,而且我不知道任何其他可用于此场景的反应式数据源。
我对 Meteor 还很陌生,所以我真的在努力确定最有可能面向未来的最佳实践。显然上面的实现不是这样的。
编辑:澄清一下,这不是我从模板函数返回时的问题。这是服务器上存在 Session 的问题。上面的代码将在服务器上生成以下错误消息:
Exception while invoking method 'connect_to_api' ReferenceError: Session is not defined
at Meteor.methods.connect_to_api (path/to/file.js:#:#)
at _.extend.protocol_handlers.method.exception ... etc etc