![](/img/trans.png)
[英]Node.js - PostgreSQL - could not determine data type of parameter $1 error
[英]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.