当前位置: 首页 > 面试题库 >

将BCrypt与Sequelize模型一起使用

路阳华
2023-03-14
问题内容

我正在尝试将bcrypt- nodejs包与我的sequelize模型一起使用,并试图遵循将散列合并到模型中的教程,但是在遇到错误generateHash。我似乎无法弄清楚这个问题。有没有更好的方法来合并bcrypt?

错误:

/Users/user/Desktop/Projects/node/app/app/models/user.js:26
User.methods.generateHash = function(password) {
                          ^
TypeError: Cannot set property 'generateHash' of undefined
    at module.exports (/Users/user/Desktop/Projects/node/app/app/models/user.js:26:27)
    at Sequelize.import (/Users/user/Desktop/Projects/node/app/node_modules/sequelize/lib/sequelize.js:641:30)

模型:

var bcrypt = require("bcrypt-nodejs");

module.exports = function(sequelize, DataTypes) {

var User = sequelize.define('users', {
    annotation_id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    firstName: {
        type: DataTypes.DATE,
        field: 'first_name'
    },
    lastName: {
        type: DataTypes.DATE,
        field: 'last_name'
    },
    email: DataTypes.STRING,
    password: DataTypes.STRING,

}, {
    freezeTableName: true
});

User.methods.generateHash = function(password) {
    return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
};

User.methods.validPassword = function(password) {
    return bcrypt.compareSync(password, this.local.password);
};
    return User;
}

问题答案:

应在以下方法的“选项”自变量中提供方法sequelize.define

const bcrypt = require("bcrypt");

module.exports = function(sequelize, DataTypes) {
    const User = sequelize.define('users', {
        annotation_id: {
            type: DataTypes.INTEGER,
            autoIncrement: true,
            primaryKey: true
        },
        firstName: {
            type: DataTypes.DATE,
            field: 'first_name'
        },
        lastName: {
            type: DataTypes.DATE,
            field: 'last_name'
        },
        email: DataTypes.STRING,
        password: DataTypes.STRING
    }, {
        freezeTableName: true,
        instanceMethods: {
            generateHash(password) {
                return bcrypt.hash(password, bcrypt.genSaltSync(8));
            },
            validPassword(password) {
                return bcrypt.compare(password, this.password);
            }
        }
    });

    return User;
}


 类似资料:
  • 问题内容: 我在理解Hibernate如何处理泛型时遇到一些麻烦,并且想知道实现我的目标的最佳方法。 给定一个简单的通用实体: 在进行hibernate初始化时,出现异常: 我几乎可以肯定,这是因为我没有给hibernate一些可能的限制条件。我知道你可以指定的东西,如上面的注释,但你失去使用泛型的灵活性。我可以使用注解限制可接受的泛型的范围吗?例如:如果我想要class ,该类从抽象类继承而来,

  • 问题内容: 我想为特定模型中的Mongoose 方法创建一个存根,以便我创建的模型的任何实例都将调用该存根,而不是普通的Mongoose 方法。我的理解是,执行此操作的唯一方法是像这样对整个模型进行存根: 不幸的是,这行代码使我的测试抛出以下错误: 有人知道这里出了什么问题吗? 问题答案: 有两种方法可以完成此操作。首先是 如果您使用log mongoose.Model控制台,则会看到该模型可用的

  • 问题内容: 我有一个简单的示例,它似乎应该工作: 因此,我们有一个名为的类,它符合协议,并定义了一个可选的类方法。 但是,这一行: 导致错误: 类型名称后的预期成员名称或构造函数调用 知道我在做什么错吗? 编辑 从声明中删除单词并稍微更改函数可以使代码得以编译,但是现在我遇到了运行时错误,指出 “快速动态投放失败” 问题答案: 我无法解释为什么您的代码会导致运行时异常。但是,如果您更改函数原型,它

  • 问题内容: 我正在处理一些服务器代码,其中客户端以JSON形式发送请求。我的问题是,有许多可能的请求,每个请求的实现细节都不尽相同。因此,我想使用一个Request接口,它定义为: 从那里,我在名为如下的类中实现了接口: 为了使用JSON,我创建了一个实例并注册了一个,如下所示: 然后,如下面的代码片段所示,我使用了它: 我得到了预期的输出。 我希望做的是用类似于以下内容的内容替换该行,但是这样做

  • 问题内容: 更新: 感谢所有提供帮助的人-这个答案的答案在于我在更复杂的代码中没有注意到的内容以及对Java5协变量返回类型不了解的内容。 原始帖子: 今天早上我一直在玩一些东西。虽然我知道我 可以用 不同的方式解决整个问题,但我发现自己一直迷恋于弄清楚为什么它没有按我预期的那样工作。在花了一些时间阅读这些内容之后,我发现我离理解还很近,因此我将其作为一个问题来看看我是否只是愚蠢,或者是否真的有我

  • 我有一个明确的模块化项目,它依赖于一个自动模块;e、 g.关于java。激活。仍然可以使用jlink吗? 查看此模块信息。爪哇: 然后jlink不能添加模块: 根据我的理解,一个自动模块无论如何都会包含整个类路径。所以我想用jlink创建运行时映像没有任何好处? 另请参阅:什么是自动模块? 有没有可能绕过这个问题?也许为这些依赖生成module-info.java?