Как использовать mysql-запрос в forloop с nodejs

Я хочу обновить базу данных в цикле for с помощью запроса mysql.

 for(let i=0;i<userarray.length;i++){
console.info(i);
     var sql = "update user set user_status=1 where id = " + userarray[i].id;
    con.query(sql, function(err, result) {
                    if (err) throw err;     
 console.info("Number of row update: " + result.affectedRows);


                });
     }
and the output is:
1
2
3
4
Number of row update:1
Number of row update:0
Number of row update:0
Number of row update:0

Здесь обновляется только одноразовая база данных. Я обнаружил, что async / await - это решение, но я не знаю, как его использовать.

Перебор каждого идентификатора пользователя и выполнение одного запроса для каждого идентификатора пользователя крайне неэффективно. Вместо этого создайте один запрос и выполните этот единственный запрос один раз. Что-то вроде update user set user_status=1 where id in (userarray[0], userarray[1]...)

Sani Singh Huttunen 10.10.2018 07:05

Какую библиотеку вы используете для подключения к базе данных?

Weedoze 10.10.2018 08:29

библиотека mysql ..

harsha 10.10.2018 09:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
46
2

Ответы 2

Возможно, вы можете использовать оператор IN в запросе SQL

let sql = 'update user set user_status = 1 where id IN (';
const userarray = [
  {
    id: 1,
  },
  {
    id: 2,
  },
  {
    id: 3,
  },
];
for(let i = 0; i < userarray.length; i++) {
  const split = i === 0 ? '' : ',';
  sql += `${split}${userarray[i].id}`;
}
sql += ')';
console.info(sql)

Если вы используете библиотеку mysql, вы должны использовать параметр для вставки идентификаторов

const userarray = [{id:0}, {id:2}, {id:5}];
const idsList = [userarray .map(user => user.id)];
const sql = "UPDATE user SET user_status = 1 WHERE id IN (?)";

con.query(sql, idsList, (err, result) => {
  if (err) throw err; 
  console.info(result);
});

Другие вопросы по теме