文档: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 依次收到错误
爱豆988 (作者)
不好意思,来迟了,这几天在发烧。
之前我用的是腾讯云。
今天用阿里云,并新建了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