Javascript 使用knexjs检测并发送冲突信号
本文档解释了使用Javascript 使用knexjs检测并发送冲突信号,javascript,node.js,knex.js,Javascript,Node.js,Knex.js,本文档解释了使用onConflict()和ignore()只会悄悄地放弃操作。如果我试图按如下方式在表中插入新行: const addItem = (item) => { return database(dbTable).insert(item) .onConflict('name') .ignore() .then(() => { }).catch((
onConflict()
和ignore()
只会悄悄地放弃操作。如果我试图按如下方式在表中插入新行:
const addItem = (item) => {
return database(dbTable).insert(item)
.onConflict('name')
.ignore()
.then(() => {
}).catch((err) => {
console.log(err)
})
}
如果不忽略,我如何(或在何处)向调用函数addItem的外部调用返回某种信号?例如,如果没有冲突(和正在添加的项目),则返回
0
;如果存在冲突(承诺没有做任何事情就悄悄解决了),返回1
?感谢可能是依赖于数据库的功能,但例如,如果您使用postgres插入,但它不返回任何行,则表示存在冲突,如本期中所述:
另外,.returning(“*”)
似乎与.onConflict(…).ignore()结合使用可以正常工作。
knex('table').insert({a: 1, b:2}).onConflict('id').ignore().returning('*').toSQL().sql;
// knex 0.21.15 returns:
// insert into "table" ("a", "b") values (?, ?)
// on conflict ("id") do nothing returning *