node.js - Getter 方法不适用于 PostgreSQL 模型

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

我正在像这样在我的用户模型上定义一个 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());
    });

但是,当我这样做时,我收到以下错误。

Unhandled rejection TypeError: user.getUUID is not a function



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

最佳答案

好吧,终于有东西可以工作了。将其定义为模型的一部分不起作用,但出于某种原因将其定义为属性的一部分有效。

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'));
    });

关于node.js - Getter 方法不适用于 PostgreSQL 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44100722/

相关文章:

mysql - SQL,如何测试并发事务

javascript - MongoDB 多集合更新

node.js - 错误:Can't canonicalize query: BadValue Unsupported projection option

json - 如何使用 Sequelize 和 node.js 进行批量插入

node.js - Sequelize cli 模型创建

mysql - 在 Apollo GraphQL 中,如何设置解析器不循环值?

node.js - Sequelize [object SequelizeModel] 保存不是函数

javascript - 我想在 Loopback 中为此 JSON 数据创建一个模型

angularjs - Angular 和 Express 路由如何在 mean.js 应用程序中协同工作?

django - 撤消密集数据库中的级联删除