在Meteor.method中调用函数会返回undefined

时间:2017-04-14 03:04:32

标签: javascript meteor

过去几天我一直试图从Meteor方法中获取返回对象。 每次我这样做,我都会在客户端上获得undefined

Meteor.methods({
 'CORSTest' : function() {
  let url = "www.theverge.com/2017/4/13/15270854/nasa-enceladus-ocean-hydrothermal-vents-alien-life-conditions-cassini-saturn";
   og(url, function(err, meta){
    if(err){
     console.log(err);
     return "Error";
    } else {
     console.log(meta);
     // Returns the correct Object on the server
     return meta;
    }
  })
 },
})

我一直在疯狂。尝试所有不同的变量和语法,我似乎无法让它工作。

任何人都可以提供任何帮助都是不可思议的。

1 个答案:

答案 0 :(得分:1)

这是一个非常常见的流星问题。您正在调用方法中的异步函数。您的return语句将从您的匿名函数返回到方法范围,从服务器方法返回到客户端。你可以遵循几种模式来解决这个问题。您可以使用promises,也可以包装匿名函数调用并使其与Meteor.wrapAsync同步。例如:

Meteor.methods({
  CORSTest() {
    const url = "www.theverge.com/2017/4/13/15270854/nasa-enceladus-ocean-hydrothermal-vents-alien-life-conditions-cassini-saturn";
    const syncFun = Meteor.wrapAsync(og);
    return syncFun(url);
  }
})