如何在 Meteor 中从客户端向服务器发出简单的 http 请求

2024-03-14

我第一次使用 Meteor,我试图在一个方法中进行一个简单的 http 调用,这样我就可以从客户端调用这个方法。

问题是,即使我将其放在包装器中,该异步调用仍会继续运行。

客户端:

Meteor.call('getToken', function(error, results) {
      console.log('entered');

      if(error) {
        console.log(error);
      } else {
        console.log(results);
      }
    });

服务器端

Meteor.methods({
    getToken: function(){

        // App url
        var appUrl = 'myAppUrl';

        // Key credentials
        var apiKey = 'mykey';
        var apiSecret = 'mySecret';

        function asyncCall(){
            Meteor.http.call(
                'POST',
                appUrl,
                {
                    data: { 
                        key: apiKey, 
                        secret: apiSecret
                    }
                }, function (err, res) {
                    if(err){
                      return err;
                    } else {
                      return res;
                    }
                }
            );
        }

        var syncCall = Meteor.wrapAsync(asyncCall);

        // now you can return the result to client.
        return syncCall; 
    } 
});

我总是得到不确定的回报。 如果我在 http.post 调用中记录响应,我将得到正确的响应。 如果我尝试记录syncCall,我什么也得不到。

我非常感谢对此的任何帮助。


您应该使用同步版本HTTP.post http://docs.meteor.com/#/full/http_post在这种情况下。尝试一下这样的事情:

Meteor.methods({
  getToken: function() {
    var appUrl = 'myAppUrl';
    var data = {apiKey: 'mykey', apiSecret: 'mySecret'};
    try {
      var result = HTTP.post(appUrl, {data: data});
      return result;
    } catch (err) {
      return err;
    }
  } 
});

而不是返回err我建议确定抛出了什么样的错误,然后throw new Meteor.Error(...)因此客户端可以将错误视为其第一个回调参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Meteor 中从客户端向服务器发出简单的 http 请求 的相关文章

随机推荐