2016-10-19 6 views
0

curl/Postmanを使用すると、次の(正しい)jsonを返すmailchimp APIから変更されたメンバーのリストを返そうとしています:Mailchimp APIがjsonではなくnode-fetchを使用するとき

{ 
    "members": [ 
    { 
     "id": "187fhdy650b10e8d43552b6c3672368212", 
     "email_address": "[email protected]", 
     "unique_email_id": "2edbhgy73836", 
     "email_type": "html", 
     "status": "unsubscribed", 
     "merge_fields": { 
     "FNAME": "", 
     "LNAME": "", 
     "MMERGE5": "", 
     //etc.... 

私はノード・アプリケーションを使用して、このオブジェクトを返すようにしたいので、次のようにnode-fetchを使用しています:

fetch(`https://us5.api.mailchimp.com/3.0/lists/<listid>/members?since_last_changed=2016-10-18T23:10:18+00:00`, {headers: authHeader}) 
    .then((response) => { 
    if (response.ok) { 
     res.status(response.status).send(response) 
    } else { 
     res.status(response.status).send(response) 
    } 
    }).catch((error) => { 
     res.status(500).send(error.message) 
    })}) 

これは私にはそれが受けて途中であることを示唆している完全に異なるJSON構造を返しますデータとフェッチの約束は解決するべきではありませんed。それは非常に大きいですので、私は、私は情報のキービットとして見るものを含めている:私は別の方法でこれを解析しようとしました

{ 
    "_opts": {}, 
    "_chunkSize": 16384, 
    "_readableState": { 
"objectMode": false, 
"highWaterMark": 16384, 
"buffer": [], 
"length": 0, 
"pipes": null, 
"pipesCount": 0, 
"flowing": null, 
"ended": false, 
"endEmitted": false, 
"reading": false, 
"sync": false, 
"needReadable": true, 
"emittedReadable": false, 
"readableListening": false, 
"resumeScheduled": false, 
"defaultEncoding": "utf8", 
"ranOut": false, 
"awaitDrain": 0, 
"readingMore": false, 
"decoder": null, 
"encoding": null 
}, 
"readable": true, 
"domain": null, 
"_events": { 
"end": [ 
    null, 
    null 
] 
}, 
"_eventsCount": 7, 
"_writableState": { 
    "objectMode": false, 
    "highWaterMark": 16384, 
    "needDrain": false, 
    "ending": true, 
    "ended": true, 
    "finished": false, 
    "decodeStrings": true, 
    "defaultEncoding": "utf8", 
    "length": 2674, 
    "writing": true, 
    "corked": 0, 
    "sync": false, 
    "bufferProcessing": false, 
    "writelen": 2674, 
    "bufferedRequest": null, 
    "lastBufferedRequest": null, 
    "pendingcb": 1, 
    "prefinished": false, 
    "errorEmitted": false, 
    "bufferedRequestCount": 0, 
    "corkedRequestsFree": { 
    "next": null, 
    "entry": null 
    } 
}, 
"writable": false, 
"allowHalfOpen": true, 
"_transformState": { 
"needTransform": false, 
"transforming": true, 
"writechunk": { 
    "type": "Buffer", 
    "data": [ 
    31, 
    139, 
    8, 
    0, 
    0, 
    0, 
    0, 
    0, 
    198,.... 

、このような第1 REPONSEの読み取りなど:

.then((response) => { 
    response.text()}) 
.then((response) => { 
    res.status(200).send(response) 
}) 

未定義のオブジェクトを返します。そしてまた、JSONとしてパース:

空のオブジェクトを返す
.then((response) => { 
    res.status(200).send(response.json()) 
}) 

{}

は何でも、私は私のフェッチ呼び出しで試すことができ、よりありますか?

答えて

0

fetch()は応答オブジェクトに解決する約束を返します。返答は応答の本体に解決する約束を返すさまざまなメソッド(.text().json())を持っています。

だから、これを試してみてください。

fetch(`https://us5.api.mailchimp.com/3.0/lists/<listid>/members?since_last_changed=2016-10-18T23:10:18+00:00`, {headers: authHeader}) 
    .then(response => { 
    res.status(response.status); 
    return response.json(); 
    }).then(body => { 
    res.send(body); 
    }).catch(error => { 
    res.status(500).send(error.message) 
    }); 
関連する問題