gpt4 book ai didi

javascript - Sequelize classMethods 与 instanceMethods

转载 作者:IT老高 更新时间:2023-10-28 22:59:37 24 4
gpt4 key购买 nike

所以开始我对 Node.js 的所有事物的冒险。我正在尝试学习的工具之一是 Sequelize。所以我将开始我想做的事情:

'use strict';
var crypto = require('crypto');

module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User', {
username: DataTypes.STRING,
first_name: DataTypes.STRING,
last_name: DataTypes.STRING,
salt: DataTypes.STRING,
hashed_pwd: DataTypes.STRING
}, {
classMethods: {

},
instanceMethods: {
createSalt: function() {
return crypto.randomBytes(128).toString('base64');
},
hashPassword: function(salt, pwd) {
var hmac = crypto.createHmac('sha1', salt);

return hmac.update(pwd).digest('hex');
},
authenticate: function(passwordToMatch) {
return this.hashPassword(this.salt, passwordToMatch) === this.hashed_pwd;
}
}
});
return User;
};

我对何时使用 classMethodsinstanceMethods 感到困惑。对我来说,当我想到 createSalt()hashPassword() 应该是类方法。它们是通用的,并且在大多数情况下与它们通常使用的特定实例没有任何关系。但是当我在 classMethods 中有 createSalt()hashPassword() 时,我无法从 instanceMethods 调用它们。

我尝试了以下变体:

this.createSalt();
this.classMethods.createSalt();
createSalt();

像下面这样的东西不起作用,我可能只是不理解一些简单的东西。

authenticate: function(passwordToMatch) {
console.log(this.createSalt());
return this.hashPassword(this.salt, passwordToMatch) === this.hashed_pwd;
}

非常感谢任何提示/提示/方向!

最佳答案

所有不修改或检查任何类型实例的方法应该是classMethod,其余的instanceMethod

例如:

// Should be a classMethods
function getMyFriends() {
return this.find({where{...}})
}

// Should be a instanceMethods
function checkMyName() {
return this.name === "george";
}

关于javascript - Sequelize classMethods 与 instanceMethods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34258938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com