node.js - GraphQL Apollo 中的多对多关系

标签 node.js express graphql sequelize.js apollo

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

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

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

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

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

最佳答案

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

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

会让你在返回的实例上调用适当的方法:
user.getTeams()

类似地,使用 find 方法时可能包含相关模型:
User.findOne({ include:[Team] })

查看文档更多详细信息。

关于node.js - GraphQL Apollo 中的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56815912/

相关文章:

javascript - node.js mongodb - collection.find().toArray(callback) - 回调不会被调用

node.js - 如何在 Express 路由中设置 Next.js 渲染?

reactjs - 在 Gatsby、GraphQL 和 Sanity 中使用 _raw 和正常数据进行推理

graphql - 如何在一个请求中使用不同的参数多次运行一个突变?

javascript - 如何正确地将 react 导入到 node-webkit 应用程序中?

javascript - 如何使用 sequelize 验证 Node 应用程序中的业务规则?

node.js - 在 node.js 中从字符串创建一个文本文件并将其作为响应流式传输

file-io - nodejs express 和文件上传

javascript - expressjs - 无法处理请求

graphql - 在 type-graphql 突变中传递多个参数以及 `GraphQLUpload`