首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bcryptjs和mysql问题

bcryptjs和mysql问题
EN

Stack Overflow用户
提问于 2020-08-24 20:53:40
回答 1查看 79关注 0票数 1

我想要将用户保存在数据库中,并创建其密码的哈希,然后将其保存为密码,但我所有的尝试都会导致RangeError:超出最大调用堆栈大小

以下是用户代码

代码语言:javascript
复制
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;

这里是尝试保存用户的地方

代码语言:javascript
复制
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);
    });
});

我该怎么处理呢?

EN

回答 1

Stack Overflow用户

发布于 2020-08-24 22:12:48

发生RangeError是因为User构造函数是在User构造函数中递归调用的。尝试删除递归调用:

代码语言:javascript
复制
constructor(name, surname, login, pass) {
    user.name = name;
    user.surname = surname;
    user.login = login;
    user.pass =pass;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63561470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档