Getter方法不适用于PostgreSQL模型

时间:2017-05-21 19:03:42

标签: node.js postgresql sequelize.js sequelize-cli

我在我的Users模型上定义了一个getter方法,如此,

'use strict';
module.exports = function(sequelize, DataTypes) {
  var Users = sequelize.define('Users', {
    name: DataTypes.STRING,
    uuid: {
      type: DataTypes.INTEGER, 
      allowNull: false, 
      primaryKey: true
    }, 
    poll_ids: DataTypes.ARRAY(DataTypes.INTEGER)
  }, {
    classMethods: {
      associate: function(models) {
        // associations can be defined here
        Users.hasMany(models.Polls, {
          foreignKey: 'userId'
        });
      }
    }, 
    getterMethods: {
      getUUID() {
        return this.getDataValue('uuid');
      }
    }
  });
  return Users;
};

我正试图像这样运行它,

models.Users.create({
        name: name, 
        uuid: uuid, 
        poll_ids: poll_ids
    }).then((user) => {
        console.log(user.getUUID());
    });

然而,当我这样做时,我收到以下错误。

  

未处理拒绝TypeError:user.getUUID不是函数

注意:我已经使用sequelize-cli定义了我的模型和迁移。我在执行迁移后将getterMethods添加到模型文件中。我运行了一次撤消迁移,同步数据库并再次迁移,以确保迁移文件反映了对我的模型的更改。但是,我不确定是否可以对迁移文件进行更新。我哪里错了?

2 个答案:

答案 0 :(得分:0)

好的,终于有了一些工作要做。将其定义为模型的一部分不起作用,但由于某种原因将其定义为属性的一部分。

module.exports = function(sequelize, DataTypes) {
  var Users = sequelize.define('Users', {
    name: DataTypes.STRING,
    uuid: {
      type: DataTypes.INTEGER, 
      allowNull: false, 
      primaryKey: true, 
      get() {
        return this.getDataValue('uuid');
      }
    }, 
    poll_ids: DataTypes.ARRAY(DataTypes.INTEGER)
  }, {
    classMethods: {
      associate: function(models) {
        // associations can be defined here
        Users.hasMany(models.Polls, {
          foreignKey: 'userId'
        });
      }
    }
  });
  return Users;
};

在路线档案

models.Users.create({
        name: name, 
        uuid: uuid, 
        poll_ids: poll_ids
    }).then((user) => {
        console.log('Finally');
        console.log(user.get('uuid'));
    });

答案 1 :(得分:0)

我暂时没有在文档中看到它,但定义instanceMethods似乎适用于您希望通过getUUID()

实现的目标

getterMethods:替换为instanceMethods,您应该可以在.getUUID(模型的实例上访问Users