Я хочу вставить данные из сеялки csv thorgh в nodejs, используя sequelize, но мне нужно настроить один файл (subdistrictId) для таблицы Subdistricts в моей базе данных по данным об именах районов в файле csv.
, поэтому я вывожу sh все данные в переменную массива при чтении csv и выполнении bulkInsert в базу данных
const fs = require('fs');
const csvParser = require('csv-parser');
const path = require('path');
module.exports = {
up: async queryInterface => {
const userAddressesMapping = [];
await fs
.createReadStream(
path.join(__dirname, '../seedData/csv/userAddresses.csv')
)
.pipe(csvParser({ separator: ',' }))
.on('error', err => {
console.log(err);
})
.on('data', async data => {
const subdistrictId = await queryInterface.rawSelect(
'Subdistricts',
{
where: { name: data.districtName }
},
['id']
);
userAddressesMapping.push({
id: data.id,
streetAddress: data.streetAddress === '' ? null : data.streetAddress,
createdAt: data.createdAt,
updatedAt: data.updatedAt,
userProfileId: data.userProfileId,
subdistrictId
});
})
.on('end', () => {
console.log(userAddressesMapping);
return queryInterface.bulkInsert('UserAddresses', userAddressesMapping);
});
},
down: queryInterface => queryInterface.bulkDelete('UserAddresses', null)
};
, но массив был пуст в потоке чтения 'end'. если я не получаю subdistrictId данных, то все просто отлично работает. я предполагаю, что сценарий, в котором я pu sh данные в массив никогда не выполняется, потому что createReadStream в «data» не ждет и продолжает завершаться, пока массив еще пуст
какое-либо решение для этого? или, может быть, кто-то знает, как обрабатывать createReamStream до тех пор, пока скрипт не будет успешно выполнен на 100% до того, как go до 'end'