2017-01-10 10 views
0

私はGoogleアラートでアラートを作成し、XMLを解析する必要があります。私はfeed-readerモジュールを使用していますし、私のコードは以下の通りです:JSONを反復処理すると、最後の結果のみが返されます

app.get('/', (req, res) => { 
    parse(url).then((rss) => { 
    let title, 
     link, 
     publishedDate, 
     contentSnippet = ''; 
    let json = {}; 

    rss['entries'].forEach((item) => { 
     title = item.title; 
     link = item.link.substring(42, item.link.indexOf('&ct=')); 
     publishedDate = item.publishedDate; 
     contentSnippet = item.contentSnippet; 
    }); 

    json = { 
     title, 
     link, 
     publishedDate, 
     contentSnippet 
    }; 

    res.send(beautify(json, null, 2, 100)); 
    }).catch((err) => { 
    res.send(err); 
    }); 
}); 

私は"entries"キーの内側に何をループしたいと思います。それは動作しますが、結果は最後になります。

また、json変数をループ内に移動すると、正しい長さではあるが、返される結果はになります。

私はJSON.stringifyを試しましたが、違いはありません。

+0

console.log jsonオブジェクトres.sendの前に貼り付けて、ここに貼り付けてください –

答えて

1

この式は、変数に最後entrieの値を割り当てる:

rss['entries'].forEach((item) => { 
    title = item.title; 
    link = item.link.substring(42, item.link.indexOf('&ct=')); 
    publishedDate = item.publishedDate; 
    contentSnippet = item.contentSnippet; 
}); 

次にあなたが最後の値からjsonを作成します。

代わりにArray#map新しい配列へのエントリ。各反復はオブジェクトを返すべきです。

const arr = rss['entries'].map(({ title, link, publishedDate, contentSnippet }) => ({ 
    title, 
    link: link.substring(42, link.indexOf('&ct=')), 
    publishedDate, 
    contentSnippet 
})); 
+0

それは働いた。どうもありがとうございます。 – mfgabriel92

関連する問題