[英]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.