2013-04-13 4 views
2

Я получаю мочи от методов HTTP Meteor.Доступ к объекту HTTP GET JSON

В качестве теста я ударяя апи щебетать с методом на сервере, следующим образом:

"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

ответ

1

Вы должны использовать вызов асинхронной вашему методу:

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

Цитирование из documentation:

на клиенте, если вы не передаете обратный вызов, и вы не внутри пня, вызов будет возвращать неопределенным, и у вас не будет способа получить возвращаемое значение метода. Это потому, что у клиента нет волокон, поэтому на самом деле он не может блокировать удаленное выполнение метода.

Обратите внимание, что в данном конкретном случае, вы можете запустить Meteor.http.get непосредственно на клиенте:

Meteor.http.get(
    "https://api.twitter.com/1/users/show.json", 
    screen_name:"ppedrazzi", 
    (error, result) -> twitterUser = result 
) 
Смежные вопросы