Ошибка при использовании опции Cast с модулем Node csv-parse
Я новичок на Node.js и пытаюсь использовать csv-parse для потоковой передачи данных csv в firestore.
Когда я запускаю сценарий, который я написал из другого ответа Stackru ниже с опцией "cast: true", я получаю ошибку "Ошибка: Аргумент"documentPath"не является допустимым путем к ресурсу. Путь должен быть непустой строкой". (сообщается в @google-cloud\firestore\build\src\validate.js:92)
Если я удаляю опцию "cast: true", она работает нормально и передает данные.
Вот ссылка на документацию по опциям проекта csv-parse: https://csv.js.org/parse/options/
var admin = require("firebase-admin");
var serviceAccount = require("./serviceAccount.json");
var fs = require('fs');
var csvFile = "test.csv"
var parse = require('csv-parse');
require('should');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://myproject.firebaseio.com"
});
var firestore = admin.firestore();
var thisRef;
var obj;
var counter = 0;
var commitCounter = 0;
var batches = [];
var header = false;
batches[commitCounter] = firestore.batch();
fs.createReadStream(csvFile)
.pipe(
parse({delimiter: ',',cast:true})
)
.on('data', function(csvrow) {
if(header == false){
header = csvrow;
} else if(counter <= 498){
obj = {};
for (var i = 2, leni = csvrow.length-1; i < leni; i++){
obj[header[i]] = csvrow[i];
}
thisRef = firestore.collection("parcels").doc(csvrow[1]);
batches[commitCounter].set(thisRef, obj);
counter = counter + 1;
} else {
counter = 0;
commitCounter = commitCounter + 1;
batches[commitCounter] = firestore.batch();
}
})
.on('end',function() {
writeToDb(batches);
});
function oneSecond() {
return new Promise(resolve => {
setTimeout(() => {
resolve('resolved');
}, 5000);
});
}
async function writeToDb(arr) {
console.log("beginning write");
for (var i = 0; i < arr.length; i++) {
await oneSecond();
arr[i].commit().then(function () {
console.log("wrote batch " + i);
});
}
console.log("done.");
}