2016-12-29 13 views
0

私は後継者が新しくなりました。私はsetterとgetterを私のモデルに実装してから、外部キーを追加しましたが、作成されていません。ゲッターとセッターを削除すると作成されます。 私は何か間違っていますか?なぜゲッターとセッターを外付けキーで作り続けるのですか?

モデルゾーン

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

答えて

0
sequelize.defineの

最初の引数は、とてもユニーク/主キーでなければならないZONE_IDここも

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

のような列の定義を取りますそれは一意の値と一致する。

関連する問題