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

来自文档的引用:

在客户端,如果你不传递回调并且你不在存根中,调用将返回 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 回答