Показать сообщение отдельно
  #2 (permalink)  
Старый 12.10.2017, 17:04
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

let counter = 0;
        //ЗАПИСЬ ПРОИСХОДИТ В ЭТОМ ПОТОКЕ
        let queryPromises = [];
        let csvStream = csv.fromPath('players_list.csv')
            .on('data', function (row) {
                if (!counter == 0) {
                    let items = row[0].split(';');
                    let nickname = items[0].trim();
                    let email = items[1].trim();
                    let reg_time = moment(items[2].trim(), 'D.MM.YYYY H:mm').unix();
                    let stat = items[3].trim();
                    console.log(tempArray);
                    queryPromises.push(client.query(queryInsert, [nickname, email, reg_time, stat]));
                }
                counter++;
            })
            .on('end', function () {
                Promise.all(queryPromises)
                    .then(() => {
                        client.query(querySelect, function (err, result) {
                            if (err){
                                return console.error('Ошибка выполнения запроса SELECT: ', err);
                            }
                
                            res.render('index', {players: result.rows});
                            done();
                        });
                    })
                    .cathc(err => {
                        // в каком то инсерте произошла ошибка
                        // обрабатываем
                    })
            });


Функция client.query - асинхронная, возвращает Promise, а также позволяет передавать callback функ-ю для совместимости со старыми версиями node-pg.
Это значит, что вы делаете select из бд раньше чем еще выполнится обработчик на csv.fromPath(...args).on('data', callback)
Ответить с цитированием