GraphQl 单向关系

GraphQl One-Direction Relationship

我希望我的用户有一个锻炼列表(它们可以是活动的、已完成的、待办事项)。我是否必须从 Workout 向用户发送 link 才能完成这项工作?没有别的办法吗? link 背部看起来很奇怪,因为我有一个循环 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
}

对于 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
}