javascript – Sequelize classMethods vs instanceMethods

前端之家收集整理的这篇文章主要介绍了javascript – Sequelize classMethods vs instanceMethods前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以开始我的冒险进入所有的东西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;
}

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

解决方法

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

例如:

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

//should be a instanceMethods
function checkMyName() {
  return this.name === "george";
}
原文链接:https://www.f2er.com/js/152583.html

猜你在找的JavaScript相关文章