2017-01-17 5 views
0

NodeJS requireのボディは、時にはオブジェクトであり、文字列であることがありますか?この機能で

exports.subscribeWebhook = function (page, pageToken) { 
    return new Promise(function (resolve, reject) { 
     request({ 
      url: 'https://graph.facebook.com/v2.6/me/subscribed_apps', 
      qs: { 
       access_token: pageToken //Query string: ?access_token=pageToken 
      }, 
      method: 'GET' 
     }, function (error, response, body) { 

私は何の問題を取得しませんが、JSON.parse(body)で体を解析しようとPOSTで、この1、のために:

exports.call = function (method, botId, json) { 
    return new Promise((resolve, reject) => { 
     request({ 
      url: 'https://api.telegram.org/bot'+mongo.mongoCache.telegramPageTokens[botId]+"/"+method, 
      method: 'POST', 
      json: json//remember to don't even set the json property if it's undefined (or maybe it's default?) 
     }, function (error, response, body) { 

私が解析してみてください体、私はエラーが発生します。私はボディを印刷するとき、それは単なるJSONオブジェクトですが、他のものはありませんが、もし私がtypeof(body)を受け取ったら、私はObjectを取得しますが、最初の関数ではstringとなります。

私はちょうどstringfyと解析することができますが、私は何が起こっているのか理解したいと思っています。なぜ時々体は文字列であり、時にはそれが対象ですか?

答えて

1

要求の真のセットアプリケーション/ JSONヘッダにjsonプロパティを設定し、さらに、JSON(あなたがする必要がいけない)

それ約リードhere

符号化facebooks戻り列に最初の要求として応答を解析あなたがそれを自分で解析する必要がある理由です。

+0

json:trueを設定した場合、返されるオブジェクトはすでにjsonになります。 – Gatonito

+0

はい、これは、このプロパティの説明でドキュメントに記載されています。 JSON.parseを実行してコールバック関数を両方の場合に使用できるようにする前に、文字列のチェックをいつでも行うことができます。 –

+0

jsonオプションを使用してjsonドキュメントを送信しないでください。あるいは、私が文書を送っているという事実は、すでにそれを真実に設定していますか? – Gatonito

関連する問題