【发布时间】:2022-01-28 11:28:17
【问题描述】:
我正在尝试使用 pg promise 执行事务,我打算在事务的多个表中插入多行。我正在使用 pg promise 辅助方法来优化插入每个表的操作,但无法将所有查询连接在一起以仅执行一个查询。如果有人能指出是否有任何方法可以进一步优化以下代码,我也将不胜感激。
目前我收到一个错误 “参数'查询'必须是一个数组。”在pgp.hlpers.concat上
db.tx(async t => {
let customerDataArray = [];
let campaignStatusArray = [];
let messageDetailsArray = [];
for(const customer of customerDetails)
{
const customerData = {
columna1: customer.x,
columnb1: customer.y"
};
const campaignStatus = {
columna2: customer.a,
columnb2: customer.b
};
customerDataArray.push(customerData);
campaignStatusArray.push(campaignStatus);
for (const message of customer.messages)
{
const messageStatus = {
columna: message.x,
columnb: message.y
};
messageDetailsArray.push(messageStatus);
}
}
const customerDataCs = new pgp.helpers.ColumnSet(['columna1', 'columnb1'], {table: 'customerdata'});
const campaignStatusCs = new pgp.helpers.ColumnSet(['columna2', 'columnb2'], {table: 'campaignstatus'});
const messageStatusCs = new pgp.helpers.ColumnSet(['columna', 'columnb'], {table: 'messageStatus'});
const customerDataQuery = pgp.helpers.insert(customerDataArray, customerDataCs);
const campaignStatusQuery = pgp.helpers.insert(campaignStatusArray, campaignStatusCs);
const messageStatusQuery = pgp.helpers.insert(messageDetailsArray, messageStatusCs);
const concatAllQueries = pgp.helpers.concat(customerDataQuery, campaignStatusQuery, messageStatusQuery);
await t.none(concatAllQueries);
})
.then(() => {
// success;
})
.catch(error => {
});
'''
【问题讨论】:
标签: postgresql pg-promise