graphql-cli 输出不产生@unique
Posted
技术标签:
【中文标题】graphql-cli 输出不产生@unique【英文标题】:graphql-cli output does not produce @unique 【发布时间】:2019-01-02 21:37:06 【问题描述】:我正在使用graphql-cli
为 Prisma 服务器生成数据模型。但是,graphql-cli
在没有@unique
的情况下继续生成 id 属性,当我将其部署到 prisma 演示服务器时出现此错误。
id
字段是保留的,格式必须为:id:ID! @独特。
所以我的问题是如何让 graph-cli 生成 @unique?
我的 prisma.graphql(aka 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
谢谢!
【问题讨论】:
【参考方案1】:您将数据模型(通常称为datamodel.graphql
)与Prisma 数据库架构(通常称为prisma.graphql
)混淆了。
Prisma 使用数据模型自动生成 Prisma 数据库模式:
@unique
指令特定于 Prisma。因此,您只能在数据模型中使用它。 Prisma 数据库模式不应该再有这个指令了。
我刚刚创建了一个小要点来更详细地解释两者之间的区别:https://gist.github.com/nikolasburk/eef24cd0d907b4a3e073723054cf847d
【讨论】:
感谢您的评论。现在,我清楚地明白了。基本上,我需要 datamodel.graphql(用于 Prisma 数据库)和 schema.graphql(用于我的 graphql 服务器)。它现在正在工作。我很感激!以上是关于graphql-cli 输出不产生@unique的主要内容,如果未能解决你的问题,请参考以下文章