Поле типа `User` возвращает` null` для Query, хотя данные существуют - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть поле profilePicture для моего типа User, которое возвращается как нулевое, хотя я вижу, что данные есть в базе данных. У меня есть следующие настройки:

// datamodel.prisma

enum ContentType {
  IMAGE
  VIDEO
}

type Content @embedded {
  type: ContentType! @default(value: IMAGE)
  url: String
  publicId: String
}

type User {
  id: ID! @id
  name: String
  username: String! @unique
  profilePicture: Content
  website: String
  bio: String
  email: String! @unique
  phoneNumber: Int
  gender: Gender! @default(value: NOTSPECIFIED)
  following: [User!]! @relation(name: "Following", link: INLINE)
  followers: [User!]! @relation(name: "Followers", link: INLINE)
  likes: [Like!]! @relation(name: "UserLikes")
  comments: [Comment!]! @relation(name: "UserComments")
  password: String!
  resetToken: String
  resetTokenExpiry: String
  posts: [Post!]! @relation(name: "Posts")
  verified: Boolean! @default(value: false)
  permissions: [Permission!]! @default(value: USER)
  createdAt: DateTime! @createdAt
  updatedAt: DateTime! @updatedAt
}

// schema.graphql

type User {
  id: ID!
  name: String!
  username: String!
  profilePicture: Content
  website: String
  bio: String
  email: String!
  phoneNumber: Int
  gender: Gender!
  following: [User!]!
  followers: [User!]!
  verified: Boolean
  posts: [Post!]!
  likes: [Like!]!
  comments: [Comment!]!
  permissions: [Permission!]!
}

Как я уже говорил, в базе данных есть данные, но когда я запускаю следующий запрос в Playground, я получаю null:

// query
{
  user(id: "5c8e5fb424aa9a000767c6c0") {
    profilePicture {
      url
    }
  }
}
// response
{
  "data": {
    "user": {
      "profilePicture": null
    }
  }
}

Есть идеи, почему?

ctx.prisma.user(({ id }), info); не возвращает profilePicture, хотя поле существует в generated/prisma.graphql

1 Ответ

0 голосов
/ 21 апреля 2019

Исправлено.Мне пришлось добавить распознаватель полей для profilePicture в User.Я делал это раньше для связанных полей, таких как posts и comments, и я думаю, это потому, что profilePicture указывает на тип @embedded Content, так же как и родственное поле.

User: {
    posts: parent => prisma.user({ id: parent.id }).posts(),
        following: parent => prisma.user({ id: parent.id }).following(),
        followers: parent => prisma.user({ id: parent.id }).followers(),
        likes: parent => prisma.user({ id: parent.id }).likes(),
        comments: parent => prisma.user({ id: parent.id }).comments(),
        profilePicture: parent => prisma.user({ id: parent.id }).profilePicture()
      }
}

...