【发布时间】:2019-05-03 12:42:51
【问题描述】:
我正在使用 knex.raw 在 Postgres ON CONFLICT 中插入行...我想像 batchInsert 一样插入多行。如何链接原始语句? TypeScript 界面提示你不能。
我当前的实现使用了 forEach + await (promise),这显然是在进行远程多次调用。
const data = [
{ ref : 'A', name : 'My A' },
{ ref : 'B', name : 'My B' },
{ ref : 'C', name : 'My C' }
];
await items.forEach(async (item) => {
const insert = trx.table('myTable').insert({'ref': item.ref, 'name' : item.name}).toSQL();
const onConflict = 'ON CONFLICT ON CONSTRAINT myTable_pkey DO NOTHING';
await trx.raw(`${insert.sql} ${onConflict}`, insert.bindings);
}
【问题讨论】:
标签: knex.js