Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不在sequelize中使用getter和setter创建外键呢?_Javascript_Node.js_Express_Sequelize.js - Fatal编程技术网

Javascript 为什么不在sequelize中使用getter和setter创建外键呢?

Javascript 为什么不在sequelize中使用getter和setter创建外键呢?,javascript,node.js,express,sequelize.js,Javascript,Node.js,Express,Sequelize.js,我是新来续集的。我已经在我的模型中实现了setter和getter,然后我添加了一个外键,但没有创建它。它仅在移除getter和setter时创建。 我做错了什么 模型区 module.exports = function(sequelize, DataTypes) { const Zone = sequelize.define('Zone', { zone: { type: DataTypes.STRING, allowNull: false }

我是新来续集的。我已经在我的模型中实现了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;
};

sequelize.define的第一个参数接受如下列的定义

 sequelize.define('Zone', {
    zone: {
        type: DataTypes.STRING,
        allowNull: false
    },
    zone_id: {
         type:DataTypes.INTEGER,
         primaryKey: true,
         //autoIncrement:true
     }
},
这里的区域id必须是唯一的/主键,以便与唯一值匹配