当前位置:  开发笔记 > 编程语言 > 正文

Sequelize classMethods vs instanceMethods

如何解决《SequelizeclassMethodsvsinstanceMethods》经验,为你挑选了1个好方法。

所以开始我的冒险进入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;
};

我在什么时候使用混乱classMethodsVS instanceMethods.当我想到createSalt()并且hashPassword()应该是班级方法时,对我来说.它们是通用的,并且大多数情况下它们与一般使用的特定实例没有任何关系.但是,当我createSalt()和我在一起时hashPassword(),classMethods我无法打电话给他们instanceMethods.

我尝试过以下变体:

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

像下面的东西不会工作,我可能只是不理解简单的东西.

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

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



1> 小智..:

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

例如:

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

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

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有