栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

与承诺的Knex交易

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

与承诺的Knex交易

您需要从内部查询中返回一个Promise,以便将外链与此链接在一起。

您还会吞下任何错误,因为您不会重新抛出它们-最好使用

.catch()
这个原因,因为这样可以使发生的事情更加清晰-这就是正常
try-catch
语句会发生的情况。

knex.transaction(function(t) {   return knex('foo')   .transacting(t)   .insert({id:"asdfk", username:"barry", email:"barry@bar.com"})   .then(function() {        return knex('foo').where('username','=','bob').update({email:"bob@foo.com"});   })   .then(t.commit)   .catch(function(e) {        t.rollback();        throw e;   })}).then(function() { // it worked}).catch(function(e) { // it failed});

为了更好地理解它,下面是被“模拟”的同步版本:

try {    var t = knex.transaction();    try {        knex("foo") .transacting(t) .insert({id:"asdfk", username:"barry", email:"barry@bar.com"});        knex("foo") .where('username','=','bob') .update({email:"bob@foo.com"});        t.commit();    }    catch (e) {        t.rollback();        // As you can see, if you don't rethrow here        // the outer catch is never triggered        throw e;    }    // It worked}catch (e) {    //It failed}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448532.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号