多くのJavaScriptオブジェクトをJSON形式で格納するファイルがあり、ファイルを読み取り、各オブジェクトを作成し、それらを使用して何かを行う必要があります(私の場合はそれらをデータベースに挿入します)。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
、あるいは何か他のものを選択することができます、ただあなたの答えで指定してください。ありがとう!