2

Meteor の HTTP メソッドに慣れていません。

テストとして、次のように、サーバー上のメソッドで Twitter の API をヒットしています。

"twitter_user": () ->
   Meteor.http.get("https://api.twitter.com/1/users/show.json", {screen_name:"ppedrazzi"})

クライアントでは、次のようにメソッドを呼び出します。

  twitterUser = Meteor.call("twitter_user")

twitterUser オブジェクトにアクセスしようとすると、未定義として表示されます。twitterUser.data.id または twitterUser.data.name を使用して、結果の JSON からフィールドを取得できると期待していましたが、うまくいきませんでした (オブジェクトが存在しないため)。

ちなみに、URL をブラウザーにドロップすると、ページに JSON オブジェクトが表示されます。例を参照してください: https://api.twitter.com/1/users/show.json?screen_name=ppedrazzi

4

1 に答える 1

1

メソッドへの非同期呼び出しを使用する必要があります。

Meteor.call "twitter_user", (error, result) -> 
  twitterUser = result

ドキュメントからの引用:

クライアントでは、コールバックを渡さず、スタブ内にいない場合、call は undefined を返し、メソッドの戻り値を取得する方法がありません。これは、クライアントにファイバーがないためです。そのため、メソッドのリモート実行をブロックする方法は実際にはありません。

Meteor.http.getこの特定のケースでは、クライアントで直接実行できることに注意してください。

Meteor.http.get(
   "https://api.twitter.com/1/users/show.json", 
   screen_name:"ppedrazzi",
   (error, result) -> twitterUser = result 
)
于 2013-04-13T15:37:10.843 に答える