CabloyJS提供了更便利的数据库事务
支持,下面我们看看在EggJS
和CabloyJS
中,分别是如何支持数据库事务
的
EggJS
- 1const conn = await app.mysql.beginTransaction(); // 初始化事务
- 2
- 3try {
- 4 await conn.insert(table, row1); // 第一步操作
- 5 await conn.update(table, row2); // 第二步操作
- 6 await conn.commit(); // 提交事务
- 7} catch (err) {
- 8 // error, rollback
- 9 await conn.rollback(); // 一定记得捕获异常后回滚事务!!
- 10 throw err;
- 11}
CabloyJS
在CabloyJS中,访问数据库相关的代码不用做任何变更,仅需在API路由上声明启用中间件transaction
即可
src/suite-vendor/test-party/modules/test-party/backend/src/routes.js
- 1// test
- 2{ method: 'post', path: 'kitchen-sink/guide/echo8', controller: 'testKitchensinkGuide', middlewares: 'transaction' },
不论使用
ctx.db
对象还是model
对象操作数据库,当开启中间件transaction
时,会自动在上下文环境中保持同一个数据库连接,从而便利的支持数据库事务
评论: