簡體   English   中英

如何從客戶端到服務器在Meteor中進行簡單的HTTP請求

[英]How to make a simple http request in Meteor from client to server

我第一次使用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的同步版本。 嘗試以下操作:

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(...)以便客戶端可以將錯誤視為其第一個回調參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM