GraphQl 单向关系

Posted

技术标签:

【中文标题】GraphQl 单向关系【英文标题】:GraphQl One-Direction Relationship 【发布时间】:2021-11-06 18:14:26 【问题描述】:

我希望我的用户有一个锻炼列表(它们可以是活动的、已完成的、待办事项)。我是否必须建立从锻炼到用户的链接才能使这项工作?难道没有别的办法了吗?有一个返回链接似乎很奇怪,因为我有一个循环 user>workout>user>workout...

我不确定这是否应该在 graphql 中完成,我是 graphql 的新手。我目前有以下架构:

type User 
    email: String @unique
    fullName: String
    birthDate: Date
    weight: Int
    height: Int
    country: String
    trainingFrequency: Int
    trainingGoal: String
    isOnboarded: Boolean
    workouts: [Workout]


type Workout 
    name: String!
    state: State!


enum State 
  ACTIVE
  TODO
  COMPLETED


type Query 
    allUsers: [User!]!
    findUserByEmail(email: String!): User

【问题讨论】:

两种Object类型的单向两向关系,都可以。见***.com/questions/53863934/… 【参考方案1】:

对于 Fauna,当您使用 @relation 指令时,始终会为您创建双向关系。在一对多关系中,引用将存储在所有多方文档中(在您的情况下为Workout 类型)。通过为您自动生成的索引,可以将图形从一侧(User 类型)遍历到多侧。

是的,您可以(几乎)无限循环地查询,但实际上并没有什么好处。

确保包含@relation 指令。

type User 
    email: String @unique
    fullName: String
    birthDate: Date
    weight: Int
    height: Int
    country: String
    trainingFrequency: Int
    trainingGoal: String
    isOnboarded: Boolean
    workouts: [Workout] @relation


type Workout 
    name: String!
    state: State!
    owner: User! @relation

【讨论】:

以上是关于GraphQl 单向关系的主要内容,如果未能解决你的问题,请参考以下文章

按关系查询 GraphQL?

GraphQL,1-1 关系突变

NestJS 中与 GraphQL 的 Prisma 自关系

具有一对多关系的 GraphQL 循环查询

在 GraphQL 中过滤嵌套关系

GraphQL/graphcool - 关系的突变