与PostgreSQL的Sequelize中的外键约束丰富的自联想

我在PostgreSQL中使用SequelizeJS ..

我有一个桌子units 。 我想要一个表unit_relations与列unit1_idunit2_idtypeunit1_idunit2_id都应该具有对units.id外键约束,以便任何时候单元被删除时,引用该单元的unit_relations任何行(作为unit1unit2 )也将被删除。

在Sequelize中,我想将unit2映射到Relation ,将unit1映射到ReverseRelation ; 例如行

          单位unit_relations
 ------------ + --------------- ---------- + ---------- + -------
 relation_id |  reverce_rel_id unit1_id |  unit2_id | types
 ------------ + --------------- ---------- + ---------- + --------
             |  11 |  43 | 亲 

将由unit1.getRelations()unit2.getReverseRelations()

我很难得到Sequelize尊重我的列名称(它想要使用relation_idreverse_relation_id )或创build外键。

我仍然不完全理解表之间的所有关系。 试着用简单的例子来描述它,而不是抽象的概念。 喜欢

 //Mary Had A Little Lamb Marry.hasOne(Lamp) 

但从我的理解,你可以这样做:

 var Sequelize = require('sequelize'); var sequelize = new Sequelize(.... { // your pg db settinds }); var Unit = sequelize.define('Unit', {}); var UnitRel = sequelize.define('UnitRel', { type: Sequelize.STRING }); // Create in Unit table columns 'relation_id' and 'rev_rel_id' UnitRel.hasOne(Unit, {foreignKey: 'relation_id', as: 'Relation'}); UnitRel.hasOne(Unit, {foreignKey: 'rev_rel_id', as: 'RevRelation'}); // Create in UnitRel table columns 'unit1_id' and 'unit2_id' UnitRel.belongsTo(Unit, {foreignKey: 'unit1_id', as: 'Unid_1'}); UnitRel.belongsTo(Unit, {foreignKey: 'unit2_id', as: 'Unid_2'}); Unit.sync({force: true}).success(function() { UnitRel.sync({force: true}).success(function() { console.log('TABLES CREATED'); }); }); 

然后find一些UnitRel和拉伸依赖字段

 UnitRel.find({ where: {id: 1}, include:[ {model: Unit, as: 'Uid_1'}, {model: Unit, as: 'Uid_2'} ] }).success(function(match) { console.log(JSON.stringify); });