2017-03-29 15 views
3

私はnode.jsを使ってファイルにフィードを書き込もうとしています。問題は、すべてのフィードを書き込むのではなく、最後の1だけです。ファイルに書き込むのは、最後の項目だけで、すべての項目ではなく、なぜ書き込むのですか?

var fs = require('fs'); 
var feedParser = require('ortoo-feedparser') 
var url = "http://iwnsvg.com/feed"; 
feedParser.parseUrl(url).on('article', function(article) { 
    console.log('title; ', article.title); 
    fs.writeFile("articles.json", JSON.stringify(article.title), function(err) { 
    if(err) { 
      console.log(err); 
    } 
    }); 
}); 

なぜですか?

答えて

3

fs.writeFile(からfs.appendFile(に変更しても問題ありません。

fs.writeFileは、ファイルを呼び出すたびにファイルを上書きしますが、fs.appendFileはファイルに追加します。

0

@Robertによると、appendFileを使用するべきだと書かれていますが、その変更は有効なjsonを書き出さないことにも注意してください。

var fs = require('fs'); 
var feedParser = require('ortoo-feedparser') 
var url = "http://iwnsvg.com/feed"; 
feedParser.parseUrl(url).on('article', function(article) { 
    console.log('title; ', article.title); 
    fs.appendFile("articles.txt", article.title + "\n", function(err) { 
    if(err) { 
      console.log(err); 
    } 
    }); 
}); 

はあなたにJSONを書き出すには:それあなたがちょうどあなたがそうのように、各ライン上にタイトルをtxtファイルを書き出すことができ、タイトルが欲しい - 私はあなたが達成しようとしているものを出力わからないんだけど行うことができます。

var fs = require('fs'); 
var feedParser = require('ortoo-feedparser') 
var url = "http://iwnsvg.com/feed"; 
let titles = []; 

feedParser.parseUrl(url) 
    .on('article', function (article) { 
    console.log('title; ', article.title); 
    titles.push(article.title); 
    }) 
    .on('end', function() { 
    fs.writeFile('articles.json', JSON.stringify({ titles }), function (err) { 
     if (err) { 
     console.log(err); 
     } 
    }); 
    }); 
0

fs.writeFileフラグのようないくつかのオプションが付属しています。フラグのデフォルト値は書き込みの場合はwなので、データは新しいものに置き換えられます。

使用''代わり

{flag:'a'} 

、あなたは大丈夫です。

しかし、WriteFileまたはAppendFileは、データを追加する必要があるたびにファイルを開いたり閉じたりするfsライブラリの上位層であることを忘れないでください。

fs.createWriteStreamを使用すると、書き込み可能なストリーム(他の言語の書き込み可能なファイルハンドル)が返されることを推奨します。次に、ファイルにデータを書き込む必要があるときに、このストリームを使用して再利用します。

関連する問題