非常に大量のデータを処理していますが、これをファイルに格納しています。私はデータセットを反復処理し、JSONファイルにすべて保存したいと考えています。NodeJSのファイルへのメモリ不足の書き込み
fsを使用してオブジェクトにすべて格納し、それをダンプする初期の方法は、メモリ不足のため動作しませんでした。
私は現在、fs.createWriteStreamを使用していますが、私はまだそれをすべてメモリに格納していると言うことができます。
誰かがより良いやり方を推薦できない限り、データをオブジェクトによってファイルに書きたいと思っています。私のコードの
パート:
// Top of the file
var wstream = fs.createWriteStream('mydata.json');
...
// In a loop
let JSONtoWrite = {}
JSONtoWrite[entry.word] = wordData
wstream.write(JSON.stringify(JSONtoWrite))
...
// Outside my loop (when memory is probably maxed out)
wstream.end()
私はストリーム間違っを使用していると思う、誰かがメモリ不足に実行せずにファイルにすべてのデータを書き込む方法を教えてくださいできますか?私がオンラインで見つけたすべての例は、ストリームの読み込みに関連していますが、私がデータ上で行っている計算のため、読み込み可能なストリームを使用することはできません。私はこのファイルに順番に追加する必要があります。
再帰なしでこれを行う方法はありますか? 私のループは実際にはループ内のループであるため、ネストされたループ内の1回の再帰呼び出しでデータを実際に処理することはできません。 –
このようなコードを整理するには、 'async'(https://www.npmjs.com/package/async)のようなライブラリを使うことを検討してください – Petr