具有HTTP请求的Meteor方法不返回回调

Meteor method with HTTP request does not return callback

本文关键字:返回 回调 方法 Meteor HTTP 请求 具有      更新时间:2023-09-26

我正在尝试创建一个带有HTTP get请求的Meteor方法。我正在返回一个结果,但我无法在客户端获得回调以返回结果。回调需要等待HTTP请求返回结果,然后才能返回回调。我成功地从HTTP请求中获取了数据,所以这不是问题所在。

关于如何实现这一点,有什么建议吗?

Meteor.methods({
   getYouTubeVideo: function (id) {
    check(id, String);
    var params = {
        part:'snippet, status, contentDetails',
        id:id,
        key:Meteor.settings.youtube.apiKey
    };
    HTTP.get('https://www.googleapis.com/youtube/v3/videos', {timeout:5000, params:params}, function(error, result){
      if (error) {
        throw new Meteor.Error(404, "Error: " + error);
        return;
      }
        console.log(result);
        return result; 
    });
  }
});

您需要使用HTTP.get的同步版本,如下所示:

var result=HTTP.get('https://www.googleapis.com/youtube/v3/videos', {timeout:5000, params:params});
return result;

如果你像以前那样使用带有回调的异步版本,你将面临一个常见的问题,那就是必须尝试在回调中返回结果(这不起作用),而不是在方法中返回结果,这是你应该做的

请注意,同步HTTP.get仅在服务器环境中可用,因此将方法声明放在server/