@holllop

Проблемы с циклом?

Есть задача мне нужно реализовать последовательную запись в БД
я это реализовал через два цикла
spoiler
async function prepareAndInsertExpenses(values, response) {
      try {
        const insertQuery = 'INSERT INTO "expenses" (n_plan, type_work_id, printer_id, material_id, performer_id, format_id, n_sheets, n_page, n_ruined) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)';
        const result = await pool.query(insertQuery, values);
        console.log('Data successfully inserted');
        response.json({ success: true, message: 'Данные успешно вставлены' });
        return true; 
      } catch (err) {
        console.error('Error inserting data:', err.stack);
        response.status(500).json({ success: false, error: 'Произошла ошибка при вставке данных' });
        return false; 
      }
    }

    async function processExpenses(response) {
      for (let i = 0; i = expenses_without_first.length; i += 8) {
        const selection = expenses_without_first.slice(i, i + 8);
        console.log("expensesChunk", expensesChunk)
        const values = [
          work_id_array[i / 8],
          selection[0],
          selection[1],
          selection[2],
          selection[3],
          selection[4],
          selection[5],
          selection[6],
          selection[7]
        ];
        
        console.log("processExpenses.values", values);

        const insertionResult = await prepareAndInsertExpenses(values, response);
        if (!insertionResult) {
          return response.status(500).json({ success: false, error: 'Произошла ошибка при вставке данных' });
        }
      }
      response.json({ success: true, message: 'Данные успешно вставлены' });
    }

    processExpenses(res);

Идея была простая сначала сформировать плейсхолдер с помощью второго цикла и передать первому для записи, но что-то пошло не так или я чего-то не понимаю, но почему то второй массив игнорирует 0 элемент массива work_id_array.
Может есть вариант эффективнее или проще или я ошибся ?
P.S.
сначала думал что ошибка может быть завязана на том, что при инициализации массива i = 0 и при work_id_array[i / 8] происходит ошибка мол 0 нельзя делить на число, но вроде как причина не в этом
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
// for (let i = 0; i = expenses_without_first.length; i += 8) {
for (let i = 0; i < expenses_without_first.length; i += 8) {

work_id_array[i / 8]

Интересная конструкция, а если поделить 8/8, то что получится?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
06 мая 2024, в 16:06
100000 руб./за проект
06 мая 2024, в 15:53
2500 руб./за проект
06 мая 2024, в 15:52
30000 руб./за проект