sequelize.js - this.getDataValue 不是函数 - 模型 sequelize v.5

标签 sequelize.js

我无法在 sequelize 模型中访问 this.getDataValue,但它在文档中说我们可以访问它,我正在使用 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;
};

最佳答案

您似乎添加了类方法而不是实例方法。这是来自官方文档的示例:

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

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

关于sequelize.js - this.getDataValue 不是函数 - 模型 sequelize v.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61391985/

相关文章:

node.js - 如何在 sequelize 连接对象中设置应用程序名称?

node.js - Sequelize 1 :n relation always empty array

sequelize.js - Sequelize中定义belongsTo关系时as和foreignKey的区别

node.js - 为什么 Sequelize 会对所有事物的名称进行复数/单数化?以及如何完全阻止这种情况?

node.js - 有没有办法更改自动创建的默认 "id"列?

sequelize.js - 续写 ORM : Make a OR operator inside and operators

node.js - 如何创建一个固定长度的自动递增 id (sequelize)

node.js - 在 GAE 上进行 Sequelize 数据库迁移的最佳实践

node.js - 选择结果后sequelize使用实例方法

node.js - 复杂的过滤器 Sequelize js