【问题标题】:Why not create Foreign Key with getters and setters in sequelize?为什么不在 sequelize 中使用 getter 和 setter 创建外键?
【发布时间】:2016-12-29 12:12:49
【问题描述】:

我是续集的新手。我已经在我的模型中实现了 setter 和 getter,然后我添加了一个外键,但它没有被创建。它仅在我删除 getter 和 setter 时创建。 我做错了什么?

示范区

module.exports = function(sequelize, DataTypes) {
const Zone = sequelize.define('Zone', {
    zone: {
        type: DataTypes.STRING,
        allowNull: false
    }
},{
    getterMethods: {
        zone: () => {
            return this.getDataValue('zone');
        }
    },
    setterMethods: {
        zone: (zone) => {
            return this.setDataValue('zone', zone);
        }
    }
},{
    classMethods: {
        associate: (models) => {
            Zone.hasMany(models.Client, {
                foreignKey: 'zone_id',
                as: 'zoneFk'
            });
        },
    },
});
return Zone;
};

模型客户端

module.exports = (sequelize, DataTypes) => {
const Client = sequelize.define('Client',{
      //atributtes...
}, {
    classMethods: {
        associate: (models) => {
            Client.belongsTo(models.Zone, {
                foreignKey: 'zone_id',
                onDelete: 'CASCADE'
            });
        },
    },
});
return Client;
};

【问题讨论】:

    标签: javascript node.js express sequelize.js


    【解决方案1】:

    sequelize.define 的第一个参数采用列的定义

     sequelize.define('Zone', {
        zone: {
            type: DataTypes.STRING,
            allowNull: false
        },
        zone_id: {
             type:DataTypes.INTEGER,
             primaryKey: true,
             //autoIncrement:true
         }
    },
    

    这里 zone_id 也必须是唯一/主键,以便匹配唯一值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-09
      • 2014-02-23
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      • 2013-08-05
      • 2017-01-01
      • 1970-01-01
      相关资源
      最近更新 更多