Что вы думаете об этих 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');
...
}