Отказ от ответственности: я программирую около 4 месяцев, так что я все еще плохо знаком с программированием.
Я использую Firebase Cloud Firestore для базы данных и вставляю файлы CSV с большими объемами данных в них.Каждый файл может иметь длину около 100 тыс. Записей.Проект, над которым я работаю, требует, чтобы пользователь загружал эти CSV с веб-страницы.
Я создал загрузчик файлов и использую инструмент PapaParse JS для анализа csv, и он делает это очень хорошо, он мгновенно возвращает массив, даже если он очень длинный.Я попытался использовать самые большие файлы, которые смог найти, и затем записал их в консоль, это очень быстро.
Проблема в том, что когда я беру этот массив, он дает мне, перебирает его и вставляет в Cloud Firestore.Работает, данные вставляются именно так, как я этого хочу.Но это очень медленно.И если я закрою окно браузера, он перестает вставлять.Вставка только 50 записей занимает около 10-15 секунд.Так что с файлами по 100 тыс. Записей это не сработает.
Я рассматривал возможность использования облачных функций, но прежде чем попытаться узнать, как все это работает, возможно, я просто не делаю это эффективнопуть?Вот я и подумал спросить здесь.
Вот JS
// Get the file uploader in the dom
var uploader = document.getElementById('vc-file-upload');
// Listen for when file is uploaded
uploader.addEventListener('change',function(e){
// Get the file
var file = e.target.files[0];
// Parse the CSV File and insert into Firestore
const csv = Papa.parse(file, {
header: true,
complete: function(results) {
console.log(results);
sim = results.data;
var simLength = sim.length;
for (var i = 0; i < simLength;i++) {
var indSim = sim[i]
iccid = indSim.iccid;
const docRef = firestore.collection('vc_uploads').doc(iccid);
docRef.set({indSim}).then(function() {
console.log('Insert Complete.')
}).catch(function (err) {
console.log('Got an error: '+ err)
})
};
}
});
});