Я создаю систему регистрации и аутентификации пользователей в nodejs. Когда я пытаюсь зашифровать пароль пользователя и сохранить его в своей базе данных sql, он выдает ошибку.
Реализация для контроллера регистрации выглядит следующим образом:
var express=require("express");
var connection = require('./../config');
const bcrypt = require('bcrypt')
module.exports.register=function(req,res){
var today = new Date();
var encryptedString = bcrypt.hashSync(req.body.password, 5);
var user={
"userid":req.body.userid,
"password":encryptedString,
"clientid":req.body.clientid,
"email":req.body.email
}
connection.query('INSERT INTO user SET ?',user, function (error, results, fields) {
if (error) {
res.json({
status:false,
message:'query error'
})
}else{
res.json({
status:true,
data:results,
message:'user registered sucessfully'
})
}
});
}
Таблица пользователей имеет следующую структуру
CREATE TABLE `user`(
`userid` varchar(25) NOT NULL,
`password` varchar(60) NOT NULL,
`clientid` varchar(25) NOT NULL,
PRIMARY KEY (`userid`),
CONSTRAINT `user_ibfk_1` FOREIGN KEY (`clientid`) REFERENCES `client`(`clientid`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Без шифрования пароля пользователь успешно сохраняется с открытым текстом. Почему эта проблема возникает при шифровании пароля?
Любая помощь, разъясняющая это, будет оценена.
Это результат для console.log (ошибка):
code: 'ER_BAD_FIELD_ERROR',
errno: 1054,
sqlMessage: "Unknown column 'email' in 'field list'",
sqlState: '42S22',
index: 0,
sql: "INSERT INTO user SET `userid` = '1', `password` = " +
"'$2b$05$0D2eG3Jp.UhlYs.pbtYip.yMrCYkjhHiVZC3WwrtmKJG4pyRKZDae', " +
"`clientid` = '1', `email` = 'abc@xyz.com'"
}