我有一个包含 40,000 行的简单 CSV 文件,我正在使用 papa-parse 处理浏览器端。
我正在尝试使用 Discover Meteor 中的技术以及我在谷歌搜索时发现的其他 101 个帖子中的技术将它们一个一个地插入一个集合中。
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 模板显然是一个简单的表单,只是文件选择和提交。客户端代码在客户端目录下。在应用程序根目录的文件中定义的人。CSV 现在被解析为字符串,以避免复杂性。插入的记录看起来不错,按名称检索,无论如何。
控制台中的 Person.find().count() 浏览器端结果为 40000。
很高兴发送文件,它只有 1.5MB 并且是随机数据 - 不敏感。