繁体   English   中英

Adonis.js api注册路线不起作用

[英]Adonis.js api Sign Up route is not working

我有一个仅Adonis.js api的应用,我的身份验证路由不起作用。

这是我的注册路线:

const Route = use('Route')

...

Route.post('/signup', 'UserController.signup')

这是UserController中的操作:

'use strict'

const User = use('App/Models/User')
const Hash = use('Hash')
const Writ = use('App/Models/Writ')

class UserController {

  async signup ({ request, auth, response }) {
      // get user data from signup form
      const userData = request.only(['name', 'username', 'email', 'password'])
      console.log(userData);

      try {
          // save user to database
          const user = await User.create(userData)
          console.log(user);
          // generate JWT token for user
          const token = await auth.generate(user)

          return response.json({
              status: 'success',
              data: token
          })
      } catch (error) {
          return response.status(400).json({
              status: 'error',
              message: 'There was a problem creating the user, please try again later.'
          })
      }
  }
...

module.exports = UserController

控制台使用Postman打印请求,但返回:

{“ status”:“错误”,“ message”:“创建用户时出现问题,请稍后重试。” }

我希望您正确配置文档中提到的所有配置。

  • 如果您的配置正确,那么此问题就是用户迁移问题。

  • 因为用户迁移不包含名称字段,所以请先检查而不将名称发送到邮递员中,并且不要在这样的控制器中获取名称

     'use strict' const User = use('App/Models/User') const Hash = use('Hash') const Writ = use('App/Models/Writ') class UserController { async signup ({ request, auth, response }) { const userData =request.only(['username','email','password']) console.log(userData); try { const user = await User.create(userData) console.log(user); // generate JWT token for user const token = await auth.generate(user) return response.json({ status: 'success', data: token }) } catch (error) { return response.status(400).json({ status: 'error', message: error }) } } ... module.exports = UserController 

然后尝试生成令牌就可以了

  • 如果您获得成功的响应,则更改用户的迁移

试试吧:

'use strict'
const User = use('App/Models/User')
const Hash = use('Hash')
class UserController {
    async signup ({ request, auth, response }) {
      // get user data from signup form
      const userData = request.only(['username', 'email', 'password']) 
      // ! Only existing fields in the database 

      console.log(userData);

      try {
        // save user to databas
        const user = new User()
        user.fill(userData)
        await user.save()

        // generate JWT token for user
        const token = await auth.generate(user)
        return response.json({
            status: 'success',
            data: token
        })
      } catch (error) {
          return response.status(400).json({
              status: 'error',
              message: error
          })
      }
    }
}

module.exports = UserController

创建用户以更好地定位错误时,添加try / catch会很有趣。

如果不起作用,请检查配置文件。

祝你今天愉快!

暂无
暂无

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

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