多くのJavaScriptオブジェクトをJSON形式で格納するファイルがあり、ファイルを読み取り、各オブジェクトを作成し、それらを使用して何かを行う必要があります(私の場合は、それらをdbに挿入します)。JavaScriptオブジェクトは次の形式で表すことができます。
フォーマットA:
[{name: 'thing1'},
....
{name: 'thing999999999'}]
またはフォーマットB:
{name: 'thing1'} // <== My choice.
...
{name: 'thing999999999'}
...
は多くのJSONオブジェクトを示していることに注意してください。ファイル全体をメモリに読み込んで、次のJSON.parse()
ように使用できることを知っています。
fs.readFile(filePath, 'utf-8', function (err, fileContents) {
if (err) throw err;
console.log(JSON.parse(fileContents));
});
ただし、ファイルが非常に大きくなる可能性があるため、ストリームを使用してこれを実現したいと思います。ストリームで発生する問題は、ファイルのコンテンツがいつでもデータチャンクに分割される可能性があることJSON.parse()
です。そのようなオブジェクトでどのように使用できますか?
理想的には、各オブジェクトは個別のデータチャンクとして読み取られますが、その方法はわかりません。
var importStream = fs.createReadStream(filePath, {flags: 'r', encoding: 'utf-8'});
importStream.on('data', function(chunk) {
var pleaseBeAJSObject = JSON.parse(chunk);
// insert pleaseBeAJSObject in a database
});
importStream.on('end', function(item) {
console.log("Woot, imported objects into the database!");
});*/
ファイル全体をメモリに読み込まないようにしたいことに注意してください。時間効率は私には関係ありません。はい、複数のオブジェクトを一度に読み取って一度にすべて挿入しようとすることもできますが、これはパフォーマンスの微調整です。ファイルに含まれるオブジェクトの数に関係なく、メモリの過負荷を引き起こさないことが保証されている方法が必要です。 。
私は使用するFormatA
かFormatB
、あるいは何か他のものを選択することができます、あなたの答えで明記してください。ありがとう!