Как использовать MySQL запрос в forloop с nodejs - PullRequest
0 голосов
/ 10 октября 2018

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

 for(let i=0;i<userarray.length;i++){
console.log(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.log("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 - это решение, но я не знаю, как его использовать.

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Возможно, вы можете использовать оператор 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.log(sql)
0 голосов
/ 10 октября 2018

Если вы используете библиотеку 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.log(result);
});
0 голосов
/ 10 октября 2018

используйте его как:

var sql = "update user set user_status=1 where id in ("
for(let i=0;i<userarray.length;i++){
      if(i!=userarray.length-1){
          sql +=  userarray[i].id + ","; 
      }
      else{
          sql += userarray[i].id + ")";
          con.query(sql, function(err, result) {
                    if (err) throw err;                    
                });
     }   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...