【问题标题】:Adonisjs: how to catch exception in lucid model creation?Adonisjs:如何在清晰的模型创建中捕获异常?
【发布时间】:2020-01-05 16:35:08
【问题描述】:

我正在使用 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 令牌持久保存到数据库时捕获可能的异常。我对阿多尼斯比较陌生。我检查了他们的文档,但找不到确切的返回类型。他们会抛出异常吗?还是只返回 null/false?我不知道。你有吗?

【问题讨论】:

    标签: javascript node.js adonis.js


    【解决方案1】:

    他们会抛出异常吗?

    是的

    创建过程中出现问题会出现异常。您可以在 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) {
        ...
      }
    }
    

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

    【讨论】:

    • 你是对的。顺便说一句,你认为持久化 jwt 令牌是个好主意吗?特别是。什么时候自己做?他们是否有任何“官方”方式以适当的方式做到这一点?
    • 通常令牌(不是刷新令牌)不会保存在数据库中。我认为保存令牌没有任何意义。因为原则是能够使用它们而不将它们存储在db中。除了存储在数据库中的刷新令牌。
    • 在无状态 REST api 中,node.js 是如何记住 jwt 令牌的?在记忆中?我最近从 Laravel 迁移到了 adonis。所以我可能在 nodejs 方式上没有常识。
    • 刷新令牌:auth0.com/blog/…
    猜你喜欢
    • 1970-01-01
    • 2014-05-25
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2018-02-25
    相关资源
    最近更新 更多