this.getDataValue не является функцией - продолжение модели v.5 - PullRequest
0 голосов
/ 23 апреля 2020

Я не могу получить доступ к this.getDataValue в модели sequelize, но в документации сказано, что мы можем получить к нему доступ, я использую SEQUELIZE v5. Я не знаю, что мне делать, но я многое выяснил.

module.exports = (sequelize, DataTypes) => {
  var User = sequelize.define('User', {
    email: DataTypes.STRING,
    name: DataTypes.STRING,
    password : DataTypes.STRING,
    is_active : DataTypes.BOOLEAN,
  }, {});

  User.associate = function(models) {
    // associations can be defined here
  };

  User.toJSON = function () {
    var values = Object.assign({}, this.get());
    delete values.password;
    return values;
  }

  User.comparePassword = async function (email, pw) {
    let err, pass;
    //ERROR RIGHT HERE
    if(!this.getDataValue('password')) TE('password not set');

    [err, pass] = await to(bcrypt_p.compare(pw, this.password));
    if(err) TE(err);

    if(!pass) TE('invalid password');

    return this;
  }

  User.getJWT = function () {
    return "Bearer "+jwt.sign({id:this.id}, "BAMBANG", {expiresIn: 86400});
  };

  User.toWeb = function () {
    let json = this.toJSON();
    return json;
  };

  return User;
};

1 Ответ

1 голос
/ 23 апреля 2020

Кажется, вы добавили методы класса вместо методов экземпляра. Это пример из официальных документов:

// Adding a class level method
User.classLevelMethod = function() {
  return 'foo';
};

// Adding an instance level method
User.prototype.instanceLevelMethod = function() {
  return 'bar';
};
...