我正在使用SegreizeJS和PostgreSQL ..
我有一张桌子units
。我想要一个包含unit_relations
,unit1_id
,unit2_id
列的表type
。 unit1_id
和unit2_id
都应具有units.id
的外键约束,以便每次删除单元时,unit_relations
引用该单位的任何行(unit1
}或unit2
)也会被删除。
在Sequelize中,我希望unit2
映射到Relation
,unit1
映射到ReverseRelation
;例如行
units unit_relations ------------+--------------- ----------+----------+------- relation_id | reverce_rel_id unit1_id | unit2_id | type ------------+--------------- ----------+----------+-------- | 11 | 43 | parent
将由unit1.getRelations()
和unit2.getReverseRelations()
提取。
我很难让Sequelize尊重我的列名(它想使用relation_id
和reverse_relation_id
)或创建外键。
答案 0 :(得分:2)
我仍然不完全理解表之间的所有关系。尝试使用简单的示例而不是抽象概念来描述它。喜欢
//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');
});
});
然后找到一些UnitRel
和拉伸依赖字段
UnitRel.find({
where: {id: 1},
include:[
{model: Unit, as: 'Uid_1'},
{model: Unit, as: 'Uid_2'}
]
}).success(function(match) {
console.log(JSON.stringify);
});