【问题标题】:Many-to-many relationships within GraphQL ApolloGraphQL Apollo 中的多对多关系
【发布时间】:2019-11-10 22:39:19
【问题描述】:

当我开始充实我的第一个 GraphQL 后端时,我遇到了一个问题,即如何在需要数据透视表时处理模式和解析器中的多对多模型。

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

现在我可以通过为数据透视表创建架构并将解析器关系连接到该架构来处理这个问题。但这似乎太乱了。如果我这样做,查询将结束,例如:

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

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

【问题讨论】:

    标签: node.js express graphql sequelize.js apollo


    【解决方案1】:

    Sequelize 支持belongsToMany 关联,允许您通过另一个表/模型查询关联的模型。这通常用于 M2M 关系,至少当您不需要数据透视表本身的任何数据时。例如定义如下关系:

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

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

    user.getTeams()
    

    同样,在使用 find 方法时,可能会包含相关模型:

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

    查看文档了解更多详情。

    【讨论】:

      【解决方案2】:

      查询将/应该更简单一些:

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

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

      看起来不那么凌乱了?

      【讨论】:

        猜你喜欢
        • 2018-09-28
        • 2019-09-10
        • 2019-01-31
        • 2020-04-25
        • 2019-09-01
        • 2021-01-13
        • 2019-06-06
        • 2020-10-13
        • 2018-10-14
        相关资源
        最近更新 更多