h***@126.com
h***@126.com
  • 发布:2022-06-14 14:29
  • 更新:2022-06-15 16:24
  • 阅读:109

请教关于 action 的问题。多个 action 情况下,after 抛出错误,无法(如何)传到下一个 after

分类:uniCloud

文档:action支持一次使用多个,比如使用db.action("action-a,action-b"),其执行流程为action-a.before->action-b.before->执行数据库操作->action-b.after->action-a.after。在任一before环节抛出错误直接进入after流程,在after流程内抛出的错误会被传到下一个after流程

测试:3个 action a, b, c。 在 a before 中抛出错误,按文档应该 c b a after 依次接收到错误,但实际只有 c after 能接收错误,b a after均接收不到错误,准确说 b a after均没执行。

// action a  
module.exports = {  
    before: async (state, event) => {  
        throw {  
            code: 1,  
            message: "测试错误"  
        }  
    },  
    after: async (state, event, error, result) => {  
        // a after 没执行  
        if (error) {  
            throw error  
        }  
        return result  
    }  
}  

// action b 和 c  
module.exports = {  
    before: async (state, event) => {  
    },  
    after: async (state, event, error, result) => {  
        // c after 接收到错误,b after 没执行  
        if (error) {  
            throw error // 如果 b c after 这里用 return , 效果就如文档描述,但应该非正确写法  
        }  
        return result  
    }  
}

请教正确写法,a before 抛出错误后,如何让 c b a after 依次收到错误

2022-06-14 14:29 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

可以详细描述一下你的使用场景吗?我们看下如何更好的处理一下

  • h***@126.com (作者)

    不好意思,来迟了,这几天在发烧。

    之前我用的是腾讯云。

    今天用阿里云,并新建了uni-admin项目用于测试,情况也一样。就是3个action,随便放在某个更新数据库的操作中,只有第一个after能接收到错误。

    2022-06-18 15:31

  • DCloud_uniCloud_WYQ

    回复 h***@126.com: 此问题已在线上clientDB修复,可以通过上传schema、action等触发云端逻辑更新,HBuilderX本地插件下次发版时修复。

    2022-06-20 15:44

要回复问题请先登录注册