我在处理Meteor.call回调时遇到困难。 我定义了一个从服务器端检索值的函数。 但是,它不会将它们返回到模板中,而是通过{{#each}}循环对其进行循环。

这是函数:

search: function()  {
   Meteor.call('mySearchFunction', arg1, function(err, res) { 
     if (err) console.log(err); 
     else if(res) {
       console.log(res);  
       return res; 
     }
   }); 
 }

console.log(res)向我显示了我需要的数据,可以使用mySearchFunction正确地获取该数据,尽管它是一个可以迭代的数组,但我无法将其传递给模板处理程序。 所以我尝试了以下方法:

search: function()  {
   var s = Meteor.call('mySearchFunction', arg1, function(err, res) { 
     if (err) console.log(err); 
     else if(res) {
       console.log(res);  
       return res; 
     }
   }); 
   console.log(s); 
   return s; 
 }

并且console.log(res)继续显示必需的数据,但console.log(s)显示为undefined 我认为这是因为流星的异步特性在res有机会在服务器端进行评估之前返回s 无论哪种方式,我都无法从存储在帮助器函数中的帮助器返回数据,这很奇怪。

#1楼 票数:3

在客户端上, Meteor.call是异步的-它返回undefined并且其返回值只能通过回调进行访问。 另一方面,帮助程序是同步执行的。 有关如何从助手中调用方法的信息,请参见此问题的答案。 这是一个快速的解决方案:

$ meteor add simple:reactive-method
Template.showPost.helpers({
  search: function () {
    arg = Session.get('currentSearch');
    return ReactiveMethod.call('mySearchFunction', arg);
  }
});

我不确定您原始帖子中的arg1是什么,因此我在解决方案中使用了会话变量,但这应该可以使您走上正确的轨道。

该程序包的问题在于,它可能会鼓励不良行为,但对于不更改状态的方法调用(例如搜索)应该没问题。

还看到在助手的部分这篇文章

  ask by nmac translate from so

未解决问题?本站智能推荐:

1回复

meteor.call与未返回的回调

我很高兴对此有很多疑问,但是我似乎找不到相关的答案。 我正在使用Meteor调用,并带有对服务器上某个方法的回调,该方法通过bitly收缩bitly ,但是尽管此方法在服务器上运行,但在客户端上却得到未定义的响应。 代码有什么想法吗? 客户 Meteor.call('bitlyShr
3回复

Meteor.call回调函数返回未定义

我在客户端上有这个代码: 这在服务器上: 在创建核对表时,Meteor.call会将信息成功传递给服务器。 我可以在服务器控制台中看到新核对表的ID。 但是,客户端只会看到错误和结果的undefined 。
1回复

如何在客户端返回Meteor.call()的值?

所以我一直在使用Twitter Me / MeteorJS,而我正在尝试做的只是在浏览器上显示twitter用户的屏幕名称。 这是我到目前为止所做的: 所以我从isClient端调用方法'screenName'。 我从我的客户端这样称呼它: 在服务器端,它在控制台上打印出正确的值,但
1回复

Meteor.call回调未执行

我的问题是永远不会调用警报。 无论myFunction是什么,它返回什么以及何时返回,都应执行回调函数中的警报,但这永远不会发生。 对这里可能发生的事情有什么了解并对此进行修复吗?
3回复

避免回调地狱。Meteor.call承诺

我一直试图避免在Meteor中回调地狱,但首先,我会解释我的问题: 我在服务器中声明了一些Meteor方法,并且我在客户端使用Meteor.call调用它们,但主要的问题是我有大量的回调使得调试成为一项非常困难的任务(以及manteinance也......)。 如果我使用“小”项目,这不
4回复

如何让Meteor.Call返回模板的值?

我试图理解这个关于这个概念的帖子 ,但是,我没有得到它。 我有以下简单的设置: 此结构返回到控制台undefined 。 如果我将myapp.js文件更改为: 我在控制台中收到了Object 。 理想情况下,这是我希望能够做到的,但它不起作用,在控制台中说明: Cannot r
1回复

Meteor.call未返回响应

我正在尝试让Stripe与新的Promise支持一起工作。 使用签出,我获得令牌并将其发送到服务器: 服务器方法定义为: 我可以调用该方法并执行,但不返回任何内容。 Meteor.call的console.log(err, res) Meteor.call未定义。 计费过程..
2回复

Meteor:来自观察回调的Meteor.call()不会执行

是否有可能从Meteor的observe回调中调用服务器方法? 我把一个重现问题的例子放在一起,在Meteor.call()的回调中调用的myCursor.observe()不会执行。 当从observe回调中调用时, Meteor.method本身也不会回调错误,它只返回Undefine