Я пытаюсь сохранить каждый элемент в ленте RSS в файл JSON для последующего чтения, и я использую feedparser .Когда я пытаюсь вставить каждый элемент в объект, который я сохраняю как JSON, я постепенно перезаписываю последний.Я пытался переместить функцию writeFeed()
из области действия feedparser.on()
, но это делает данные канала необъявленными.Есть ли что-то другое в обработке потока фидпарсера, который мне не хватает, или я упускаю что-то очевидное в цикле?
let req = request('https://travel.state.gov/_res/rss/TAsTWs.xml')
const feedparser = new FeedParser();
req.on('error', function (error) {
// handle request errors
});
req.on('response', function (res) {
var stream = this; // `this` is `req`, which is a stream
if (res.statusCode !== 200) {
this.emit('error', new Error('Bad status code'));
}
else {
stream.pipe(feedparser);
}
});
feedparser.on('error', function (error) {
// handle errors
});
feedparser.on('readable', function () {
var stream = this; // `this` is `feedparser`, which is a stream
var meta = this.meta; // **NOTE** the "meta" is always available in the context of the feedparser instance
var item;
let feed = [];
while (item = stream.read()) {
feed.push({title: item.title});
}
let jsonFeed = JSON.stringify(feed);
function writeFeed(data) {
fs.writeFile('savedFeed.json', JSON.stringify(data), 'utf8', function(error) {
if(error) {
console.log('error: ' + err);
} else {
console.log('report: success');
}
});
}
writeFeed(jsonFeed);
});