我很好奇如何knex
有效,因为它看起来很流畅,而 sql
更有条理。最终knex
转译为 sql
或任何数据库引擎。
问题
前任:
knex('table').select('wire').limit(1).then((row)=>{
if(row){
knex('table2').update()... (1)
}
throw new Error('Nothing')
}).then(r=>{
knex('tablw')..... (2)
})
....
catch(e=>{
....
})
还是在 knex 中创建交易?
knex()
调用数据库陈述? 我找不到任何关于它如何实际调用/查询数据库的文档。
乍一看,好像每个
knex()
语句将调用数据库(在我的示例中,它将是三个不同的时间?)这意味着创建事务将比所有这些小查询/调用好 1000%谢谢一堆!
最佳答案
很好的问题,这里有一些答案:
例如,当您需要在多个表中进行多次更改时,如果其中一个失败,则执行其他表将毫无意义。
典型的例子是一个银行应用程序,你应该从一个用户那里拿钱并将其添加到另一个用户。
如果第一个操作(取钱)成功但第二个操作失败,则您的系统处于未知状态。
为了防止这种情况,您在事务中运行它们,如果有任何失败,数据库将回滚该操作。
小提示,利用
async/await
语法,它将使您的代码更具可读性。then
它构建查询并将其传递给数据库的方法。你可以测试一下,建一个
select
查询并且不要调用“then”,它不会在数据库上执行任何查询。 关于javascript - knex - 链接语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63867607/