所以开始我的冒险进入所有的东西Node.我试图学习的其中一个工具是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; };
我在使用classMethods vs instanceMethods时感到困惑.对我来说,当我想到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; }