2015-09-22 42 views
0

我想從服務器端返回一個值到客戶端,如果我從API調用中收到錯誤響應。在Meteor獲取400響應時無法返回值HTTP.post()

if Meteor.isClient 
    Meteor.call 'foo',data,(err,results)-> 
    console.log(results) 


if Meteor.isServer 
    Meteor.methods foo:(data)-> 
    results = Meteor HTTP.post "example.com",{ 
     data: data 
    },(err,results) 
    if err 
     console.log('abc') 
     return 0 

如果我得到400錯誤來自example.com,然後在打印abc但它不返回任何東西給客戶端。

由於提前,

+0

你的語法是無效的,想必你的意思是把' - >'後''HTTP.post's(ERR,結果)',然後縮進接下來的三條線。 – user3374348

回答

1

正如@ user3374348說,如果你希望你的方法返回它的結果,你應該使用HTTP.post 同步。否則,HTTP.post回調將返回結果(無處),而不是您的foo方法。這裏是你會怎麼做,在常規的JavaScript:

if (Meteor.isServer) { 
    Meteor.methods({ 
    foo: function (data) { 
     try { 
     var result= HTTP.post("example.com", { 
      data: data 
     }); 
     return result; 
     } 
     catch (error) { 
     // todo: check if the error is 400 
     console.log("abc"); 
     return 0; 
     } 
    } 
    }); 
} 
+0

'HTTP.post'是內置的Meteor,它已經在服務器上同步工作。你仍然可以通過傳遞迴調來異步調用它。 – user3374348

+0

沒錯,那就更簡單了。 – SylvainB