javascript - 阿多尼斯 : how to catch exception in lucid model creation?

标签 javascript node.js adonis.js

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

最佳答案

Do they throw an exception?

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

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

关于javascript - 阿多尼斯 : how to catch exception in lucid model creation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59601928/

相关文章:

javascript - 对触发调用的表单的 jQuery 引用

node.js - 为大量出站 HTTP 请求优化 Node.js?

node.js - 当 URL 在浏览器中工作时,什么可能导致 "connect ETIMEDOUT"错误?

javascript - 根据 Adonis.js 中数据库的结果更改 HTML 标签

node.js - 如何解决错误 gypgyp ERR!ERR!发现 VSfind VS msvs_version 未从命令行或 npm 配置设置?

Javascript 为动态表行创建 onclick 事件

javascript - 两个固定宽度的 div,以及另一个具有动态大小的 div

javascript - 形状上的单击事件在kineticjs中不起作用

javascript - Socket.io - 变量未在 socket.on 外部更新

javascript - 我如何在此模板字符串中创建条件?