[英]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.