GraphQL Apollo 中的多对多关系

Many-to-many relationships within GraphQL Apollo

当我开始充实我的第一个 GraphQL 后端时,我 运行 遇到了一个问题,即每当枢轴 table 出现时如何处理模式和解析器中的多对多模型需要。

假设我有用户和团队。他们每个人都属于一个名为 UserTeam 的支点 table 中的 ToMany。问题是如何最好地使用解析器处理数据流。

现在我可以通过为枢轴 table 创建一个模式并将解析器关系连接到它来处理这个问题。但它看起来很乱。如果我这样做,查询将结束,例如:

query{
    user(ID: "1"){
        userTeams(){
            team{
                name
            }
        }
    }
}

现在必须有更好的方法来做到这一点。我只是不知道它是什么 是。

Sequelize 支持belongsToMany 关联,允许您通过 另一个table/model 查询关联模型。这是 M2M 关系的常用方法,至少当您不需要来自枢轴 table 本身的任何数据时。例如定义如下关系:

User.belongsToMany(Team, {through: 'UserTeam'})

会让您在返回的实例上调用适当的方法:

user.getTeams()

同样,使用查找方法时,可能会包含关联模型:

User.findOne({ include:[Team] })

查看文档了解更多详情。

查询will/should简单一点:

query{
  user(ID: "1"){
    userTeams {
      name
    }
  }
}

因为 userTeams 将是(解析器应该 return)team 类型的数组。

好像没那么乱了?