后续如何提出加入请求?

时间:2019-09-09 12:16:18

标签: node.js join orm sequelize.js

我正在尝试使用Sequelize进行联合查询。

那是我的数据库:
enter image description here
我需要选择所有关系并得到这种结果:

[
    {
        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
    },
    ...
]

对于我的每一个关系,我都要去做另一个请求以获取数据...
因此,我在此Stackdoc中进行了介绍。
然后我编写了这段代码:

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}}行。

2 个答案:

答案 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
        }
    ]
})