papa-parse を使用してブラウザー側で処理している 40,000 行の単純な CSV ファイルがあります。
Discover Meteor や、Google で見つけた他の 101 件の投稿のテクニックを使用して、それらを 1 つずつコレクションに挿入しようとしています。
40000 はブラウザー側でかなり迅速に挿入されますが、mongo サーバー側を確認すると、387 レコードしかありません。
最終的に (通常は 20 秒程度)、サーバー側への挿入が開始されます。しかし、ブラウザを閉じたり中断したりすると、既に挿入されているレコードは明らかに消えます。
挿入をサーバー側に強制する方法、または少なくとも監視して、ユーザーに成功をいつ通知するかを知るにはどうすればよいですか?
Tracker.flush() を試してみました違いはありません。
Meteor.method でサーバー側の挿入を行いますが、すべてのサーバー側の CSV ライブラリは、クライアント側よりも操作が複雑です (私はほとんどすべてのプログラミングの初心者です :)
ありがとう!
これは私のコードの主要部分です(クライアントフォルダー内):
Template.hello.events({
"submit form": function (event) {
event.preventDefault();
var reader = new FileReader();
reader.onload = function (event) {
var csv = Papa.parse(this.result, {header: true});
var count = 0;
_.forEach(csv.data, function (csvPerson) {
count++;
Person.insert(csvPerson);
console.log('Inserting: ' + count + ' -> ' + csvPerson.FirstName);
});
};
reader.readAsText(event.target[0].files[0]);
}
});
コンソール出力の最後の数行:
Inserting: 39997 -> Joan
Inserting: 39998 -> Sydnee
Inserting: 39999 -> Yael
Inserting: 40000 -> Kirk
CSV (ランダム生成データ) の最後の数行:
Jescie,Ayala,27/10/82,"P.O. Box 289, 5336 Tristique Road",Dandenong,7903,VI,mus.Proin@gravida.co.uk
Joan,Petersen,01/09/61,299-1763 Aliquam Rd.,Sydney,1637,NS,sollicitudin@Donectempor.ca
Sydnee,Oliver,30/07/13,Ap #648-5619 Aliquam Av.,Albury,1084,NS,Nam@rutrumlorem.ca
Yael,Barton,30/12/66,521 Auctor. Rd.,South Perth,2343,WA,non.cursus.non@etcommodo.co.uk
Kirk,Camacho,25/09/08,"Ap #454-7701 A, Road",Stirling,3121,WA,dictum.eu@morbitristiquesenectus.com
hello テンプレートは明らかに単純なフォームで、ファイルを選択して送信するだけです。クライアント コードは client ディレクトリの下にあります。アプリケーション ルートのファイルで定義された人物。複雑さを避けるため、現時点では CSV は文字列として解析されます。挿入されたレコードは問題ないように見え、名前で取得します。
コンソールの Person.find().count() ブラウザ側では 40000 になります。
このファイルはわずか 1.5 MB で、ランダム データであり、機密ではありません。