我正在尝试使用Sequelize进行联合查询。
那是我的数据库:
我需要选择所有关系并得到这种结果:
[
{
id: 1,
State: true,
FK_User: {
id: 2,
Name: "my name"
},
FK_Team: {
id: 3,
Name: "team name"
}
},
...
]
但是今天我得到了这个结果:
[
{
id: 1,
State: true,
FK_User: 2,
FK_Team: 3
},
...
]
对于我的每一个关系,我都要去做另一个请求以获取数据...
因此,我在此Stack和doc中进行了介绍。
然后我编写了这段代码:
let User = this.instance.define("User", {
Name: {
type: this.libraries.orm.STRING,
allowNull: false
}
});
let Team = this.instance.define("Team", {
Name: {
type: this.libraries.orm.STRING,
allowNull: false
}
});
let Relation = this.instance.define("Relation", {
State: {
type: this.libraries.orm.BOOLEAN,
allowNull: false,
defaultValue: 0
}
});
Relation.hasOne(User, {as: "FK_User", foreignKey: "id"});
Relation.hasOne(Team, {as: "FK_Team", foreignKey: "id"});
有了这段代码,我在表之间没有任何关系...所以我在这两行中添加了这些内容。我不明白为什么我需要建立双向关系,因为我不需要访问用户和团队之间的关系...
User.belongsTo(Relation, {foreignKey: 'FK_User_id'});
Team.belongsTo(Relation, {foreignKey: 'FK_Team_id'});
当我这样做时,我在User表中有一个FK_User_id,在Team表中有一个FK_Team_id ...我不知道如何建立这种简单的关系,并通过我的futur请求和{ {1}}行。
答案 0 :(得分:0)
User.hasOne(Relation);
Team.hasOne(Relation);
Relation.belongsTo(Team);
Relation.belongsTo(User);
此代码似乎有效。
我不知道为什么...
答案 1 :(得分:0)
这里的关联设置正确,您可以通过include
加入它:
Relation.findAll({
where : {
state : true
}
include:[
{
model : User
},
{
model : Team
}
]
})