Я работаю над созданием модели данных для сервера Prisma с помощью graphql-cli. Тем не менее, graphql-cli продолжает создавать свойства id без @unique, и я получаю эту ошибку, когда развертываю его на демонстрационном сервере prisma.
The field
idis 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
Спасибо!


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

Директива @unique специфична для Prisma. Поэтому вы можете использовать его только внутри своей модели данных. В схеме базы данных Prisma больше не должно быть этой директивы.
Я просто создал небольшую суть, чтобы более подробно объяснить разницу между ними: https://gist.github.com/nikolasburk/eef24cd0d907b4a3e073723054cf847d
Спасибо за ваш комментарий. Теперь я это четко понимаю. По сути, мне понадобились datamodel.graphql (для базы данных Prisma) и schema.graphql (для моего сервера graphql). Сейчас он работает. Я ценю его!