Вывод graphql-cli не создает @unique

Я работаю над созданием модели данных для сервера Prisma с помощью graphql-cli. Тем не менее, graphql-cli продолжает создавать свойства id без @unique, и я получаю эту ошибку, когда развертываю его на демонстрационном сервере prisma.

The field id is reserved and has to have the format: id: ID! @unique.

Итак, мой вопрос как я могу заставить graph-cli генерировать @unique?

В моем prisma.graphql (также известном как datamodel.graphql) есть

type Comment implements Node {
  id: ID!
  content: String!
  userIdCommenBy: String!
  videoId: String!
  createdTime: String!
}

этот тип, который должен быть

type Comment implements Node {
  id: ID! @unique
  content: String!
  userIdCommenBy: String!
  videoId: String!
  createdTime: String!
}

schema.graphql

type Query {
  feeds: [Video]
  users: [User]
  user: User
  videos: [Video]
  video: Video
  comments: [Comment]
  comment: Comment
  questions: [Question]
  question: Question
}

type Mutation {
  addUser(id: ID, firstName: String, lastName: String, companyId: String): User
  addComment(id: ID, content: String, userIdCommenBy: String): Comment
  addQuestion(id: ID, title: String, userIdAsekedBy: String, isAnonymous: String): Question
}

type User {
  id: ID
  email: String
  password: String
  firstName: String
  lastName: String
  companyId: String
  createdTime: String
}

type Video {
  id: ID
  questionId: String
  imgUrl: String
  videoUrl: String
  views: Int
  likes: Int
  isPrivate: Boolean
  comments: [Comment]
  createdTime: String
}

type Comment {
  id: ID
  content: String
  userIdCommenBy: String
  videoId: String
  createdTime: String
}

type Question {
  id: ID
  title: String
  userIdAsekedBy: String
  isAnonymous: Boolean
  countSkipped: Int
  views: Int
  createdTime: String
}

type Notification {
  isRead: Boolean
  isHidden: Boolean
  senderId: String
  recipientId: String
  typeOfNotification: String
  createdTime: String
}

.graphqlconfig.yml

projects:
    app:
        schemPath: src/schema.graphql
        extensions:
            endpoints:
            default: ${env:API_ENDPOINT}
    prisma:
        schemaPath: src/prisma/prisma.graphql
        extensions:
            prisma: src/prisma/prisma.yml

Команда, которую я запускаю graphql get-schema --project prisma --dotenv .env.dev

Спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
2
0
332
1

Ответы 1

Вы путаете модель данных (обычно называемый datamodel.graphql) с Схема базы данных Prisma (обычно называемый prisma.graphql).

Модель данных используется Prisma для автоматического создания схемы базы данных Prisma:

Директива @unique специфична для Prisma. Поэтому вы можете использовать его только внутри своей модели данных. В схеме базы данных Prisma больше не должно быть этой директивы.

Я просто создал небольшую суть, чтобы более подробно объяснить разницу между ними: https://gist.github.com/nikolasburk/eef24cd0d907b4a3e073723054cf847d

Спасибо за ваш комментарий. Теперь я это четко понимаю. По сути, мне понадобились datamodel.graphql (для базы данных Prisma) и schema.graphql (для моего сервера graphql). Сейчас он работает. Я ценю его!

kokajp 27.07.2018 03:54

Другие вопросы по теме