簡體   English   中英

創建新用戶時出現數據類型錯誤 Knex Postgresql Node.js

[英]Data Type Error when create a new user Knex Postgresql Node.js

我有這個 createUser 方法:

const createUser = (request, response) => {
   const { username, password, score } = request.body
   
   database("user")
   .select()
   .where({ username })
   .first()
   .then(user => {
       if (!user) {
           return bcrypt.hash(password, 12)
               .then(hashedPassword => {
                   return database("user").insert({
                       username, password_digest: hashedPassword, score
                   }).returning("*")
               })
               .then(users => {
                   const secret = "HERESYOURTOKEN"
                   jwt.sign(users[0], secret, (error, token) => {
                   console.log(users[0])
                   response.json({ token, user: users[0] })
                   })
               })
       }
           response.send("Please choose another username")
   }).catch(error => {
       response.status(401).json({
           error: error.message
       })
   })
   
}

而這個身份驗證方法:

function authenticate(request, response, next){
    const token  = request.headers.authorization.split(" ")[1]
    const secret = "HERESYOURTOKEN";
    if (!token) {
        response.sendStatus(401)
    }
    let id = null
    try {
        id = jwt.verify(token, secret)
    } catch(error){
        response.sendStatus(403)
    }
    const user = database("user")
        .select()
        .where("id", id)
        .first()

    request.user = user;
    next();
}

當我使用 Postman 創建新用戶時,它給了我 401 Unauthorized 錯誤消息:在此處輸入圖像描述

分數數據類型為 integer:

exports.up = function(knex) {
  return knex.schema.createTable("user", table => {
      table.increments()
      table.string("username")
      table.string("password_digest")
      table.integer("score")
  })
};

exports.down = function(knex) {
  return knex.schema.dropTableIfExists("user")
};

可能有人可以幫助我。

錯誤應該來自jwt.sign()您的秘密格式不正確。

你能嘗試一個簡單的const secret = "ABC"看看它是否有效嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM