INSERT и DELETE нескольких записей, используя node-postgres - PullRequest
0 голосов
/ 02 ноября 2018

Что вы думаете об этих INSERT и DELETE нескольких записей, используя node-postgres. Я немного руководствовался этой темой: https://github.com/brianc/node-postgres/issues/957

но я не уверен, что мой код соответствует наилучшему способу сделать это.

Добавление нескольких записей (с несколькими строками) и использование TRANSACTION:

try{
  const data = [[1,1],[1,2],[1,5]];
  const values1 = []; //[1,1,1]
  const values2 = []; //[1,2,5]

  data.map((element)=>{
      values1.push(element[0]);
      values2.push(element[1]);
  })

  //transaction
  await client.query('BEGIN');
  const text = `INSERT INTO user_role (id_user, id_role) SELECT * FROM UNNEST ($1::int[], $2::int2[])`;
  const values = [value1,value2]
  const { rows } = await client.query(text,values);
  await client.query('COMMIT');
  ...
}
catch{
  await client.query('ROLLBACK');
  ...
}

Удаление нескольких записей (используя несколько строк) и использование TRANSACTION:

try {
  const data = [[1,1],[1,2],[1,5]];
  const values1 = []; //[1,1,1]
  const values2 = []; //[1,2,5]

  data.map((element)=>{
      values1.push(element[0]);
      values2.push(element[1]);
  })

  const text = `DELETE FROM users WHERE (id_user,role) IN (SELECT * FROM (UNNEST($1::int[],$2::int[]))`;
  const values = [values1,values2];
  //transaction
  await client.query('BEGIN');
  const { rows } = await client.query[text, values];
  await client.query('COMMIT');
  ...
}
catch{
  await client.query('ROLLBACK');
  ...
}
...