私は自社のRocket Chatサーバーのスクリプトをhubotで書いています。学習のステップとして、私はforecast.ioからAPIデータを取得して特定のメンバーをユーザーに出力することにしました。しかし、ボットは私が試してもJSONを出力しません。本文全体を送信しようとすると「[object Object]」としか言わず、特定のメンバーを出力しようとすると "undefined"が送信されるか、何も送信されません。また、私は "json ['member'] ['member']"のような構文を使用してみましたが、 "json.member.member"(と私はインターネット上で両方見たことがあります)とどちらもうまくいきませんでした。どんな助けでも大歓迎です。前もって感謝します。 (注:私はFORECAST_KEYようなコードで書かれている私のAPIキーが含まれていませんでした)SOLVED HubotでCoffeescriptの解析済みJSONにアクセスできない
はを解決しよう: 私は完全に何のNode.jsがすべてについて理解していませんでした。 Node.jsはイベントベースのです。つまり、リニアな順序でアクションを実行する代わりにイベントが発生したときにアクションを実行します。
私の問題は、データの復帰と関数の復帰の間にレイテンシがあったことです。より単純には、関数が空のコンテナを既に返すまで、リクエストは完了しませんでした。この問題は、コードに直接要求を入れるのではなく、別の関数を使用して私の住んでいた。
module.exports = (robot) ->
robot.hear /weather/i, (res) ->
testurl = "https://api.forecast.io/forecast/#{FORECAST_KEY}/37,-10"
data = httpRequest(robot, testurl, res)
res.send("Checking Weather...")
res.send("#{data['latitude']}")
res.send("#{data.latitude}")
httpRequest = (robot, url, topRes) ->
topRes.http(url)
.get() (err, res, body) ->
#If error, display error
if err
topRes.send("Bot Encountered an Error :: #{err}")
else
#Try to parse JSON
tryBody = body
try
data = JSON.parse(tryBody)
catch e
#Catch error, return plain body
return body
#If not error, return JSON
return data
この問題が解決しましたか?簡単な 'JSON.stringify body'を使って生のJSONを見ることができます。 – wolfsgang