繁体   English   中英

Typescript 返回和异步等待

[英]Typescript return and async await

我在 typescript 中面临设计问题。 在我的 controller 中,我进行了验证,验证方法返回 422 响应,结束线程或我尝试使用的验证数据。 所以这是我的代码。 在我的 controller 我有

async createFeed(ctx : HttpContextContract){
    await this.feedValidator.createFeedValidate(ctx)
    return this.feedService.createFeed(ctx)
  }

这里await this.feedValidator.createFeedValidate(ctx)执行验证逻辑,此方法返回 422 或经过验证的 object

try {
        const payload = await ctx.request.validate({ schema: createFeedSchema, messages : msg })
        return payload
      } catch (error) {
         return ctx.response.status(422).send(error.messages)
  }


现在,使用这种方法,我无法访问验证方法返回的payload

如果我尝试

let validatedData = await this.feedValidator.createFeedValidate(ctx)
return this.feedService.createFeed(ctx,validatedData)

如果验证返回,则线程不会停止return ctx.response.status(422).send(error.messages)

无论如何,我可以进行方法链接或有很好的高级解决方案吗?

提前谢谢你。

您似乎正在使用 AdonisJS。 如果您查看文档,发送方法( ctx.response.status(422).send(error.messages) )返回“void”,即什么也没有。 这就是为什么您无法从 try catch 中获得回报。

或者,您可以执行以下操作:

您的 createFeedValidateMethod 应仅包含以下内容:

return ctx.request.validate({ schema: createFeedSchema, messages : msg })

在您的 controller 中:

async createFeed(ctx : HttpContextContract){
   try {
    let validatedData = await this.feedValidator.createFeedValidate(ctx)
    return this.feedService.createFeed(ctx, validatedData)
   } catch (err) {
     return ctx.response.status(422).send(error.messages)
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM