繁体   English   中英

Adonisjs:如何在清晰模型创建中捕获异常?

[英]Adonisjs: how to catch exception in lucid model creation?

我正在使用 adonisjs 构建 RESTful api。 我在 jwt 登录模块中遇到了这个问题。 看看下面的代码:

async login({request, auth, response}) {

    let {email, password} = request.all()

    try {
      if (await auth.attempt(email, password)) {
        let user = await User.findBy('email', email)
        let token = await auth.generate(user)
        user.password = undefined
        Object.assign(user, token)
        //------------------------------------------
        const assignedToken = await Token.create({
          user_id: user.id,
          token,
        })
        // -------- i'd like to catch exception here...
        return response.json({
          success: true,
          user
        })
      }
    } catch(e) {
        return response.json({
          success: false,
          message: 'login_failed'
        })
    }
  }

我想在将 jwt 令牌持久化到数据库时捕获可能的异常。 我对阿多尼斯很陌生。 我检查了他们的文档,但找不到确切的返回类型。 他们会抛出异常吗? 或者只是返回空/假? 我不知道。 你有什么?

他们会抛出异常吗?

是的

如果在创建过程中出现问题,则会出现异常。 您可以在 try/catch 内部创建一个新的 try/catch。 喜欢:

async login({request, auth, response}) {
...
  try {
    ...
    try { // New try/catch
      const assignedToken = await Token.create({
        user_id: user.id,
        token,
      })
    } catch (error) {
      // Your exception
      return ...
    }
    return response.json({
      success: true,
      user
    })
  }catch (e) {
    ...
  }
}

这是最简单的解决方案。 我会这样做,因为可能存在不同类型的错误。

暂无
暂无

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

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