我想要将用户保存在数据库中,并创建其密码的哈希,然后将其保存为密码,但我所有的尝试都会导致RangeError:超出最大调用堆栈大小
以下是用户代码
import db from "./db";
import bcrypt from "bcryptjs";
class User {
constructor(name, surname, login, pass) {
var user = new User();
user.name = name;
user.surname = surname;
user.login = login;
user.pass =pass;
}
save(cb){
let sql = "INSERT INTO users(name, surname, login, hash) VALUE ?";
let values = [[this.name, this.surname, this.login, this.hash]];
this.hashPass((result)=>{
db.query(sql, [values], cb);
});
};
hashPass(pass, cb){
bcrypt.genSalt(8,(err, salt) => {
if (err) throw err;
bcrypt.hash(pass, salt, (result)=>{
cb(result);
});
});
}
varification(login, password, cb) {
bcrypt.compare(pass, hash, (err, result) => {
cb(result);
});
}
}
export default User;这里是尝试保存用户的地方
router.post('/regist', (req, res)=> {
let entryData = req.body;
let newUser = new User(entryData.name, entryData.surname, entryData.login, entryData.password);
newUser.save((err, result)=> {
if (err) {
console.log(err);
}
res.json(result);
});
});我该怎么处理呢?
发布于 2020-08-24 22:12:48
发生RangeError是因为User构造函数是在User构造函数中递归调用的。尝试删除递归调用:
constructor(name, surname, login, pass) {
user.name = name;
user.surname = surname;
user.login = login;
user.pass =pass;
}https://stackoverflow.com/questions/63561470
复制相似问题