我正在开发 GraphQL 节点教程,并且已完成第 7 步。https://www.howtographql.com/graphql-js/7-subscriptions/我从我的datamodel.prisma文件中的这段代码中得到了一些语法错误:directive @id on FIELD_DEFINITIONdirective @unique on FIELD_DEFINITIONdirective @createdAt on FIELD_DEFINITIONscalar DateTimetype Link { id: ID! @id createdAt: DateTime! @createdAt description: String! url: String! postedBy: User votes: [Vote!]!}type User { id: ID! @id name: String! email: String! @unique password: String! links: [Link!]! votes: [Vote!]!}type Vote { id: ID! @id link: Link! user: User!}但我仍然得到'User' type [@6:1] tried to redefine existing 'User' type [@15:5]和'Link' type [@24:1] tried to redefine existing 'Link' type [@6:5]。我也不确定我是否声明directives或scalars正确,因为官方教程中缺少这一点。任何人都可以就如何对这些问题进行排序提供任何建议吗?Schema.graphql:type Query { info: String! feed(filter: String, skip: Int, first: Int, orderBy: LinkOrderByInput): Feed!}type Feed { links: [Link!]! count: Int!}type AuthPayload { token: String user: User}type User { id: ID! name: String! email: String! links: [Link!]!}type Vote { id: ID! link: Link! user: User!}type Link { id: ID! description: String! url: String! postedBy: User votes: [Vote!]!}type Subscription { newLink: Link newVote: Vote}type Mutation { post(url: String!, description: String!): Link! signup(email: String!, password: String!, name: String!): AuthPayload login(email: String!, password: String!): AuthPayload vote(linkId: ID!): Vote}enum LinkOrderByInput { description_ASC description_DESC url_ASC url_DESC createdAt_ASC createdAt_DESC}
2 回答
繁星coding
TA贡献1797条经验 获得超4个赞
今天早上我遇到了同样的错误,我觉得这与缓存有关。当我重命名变量时它消失了。在您的情况下,将所有“链接”定义/引用更改为“LinkTwo”并查看错误是否消失。与“用户”相同...将其更改为“用户二”。如果是这样,也许您可以稍后将它们重命名。
函数式编程
TA贡献1807条经验 获得超9个赞
我之前没有使用过 Prisma,只是看了一眼教程,但看起来您正在定义两种 User 类型;您在 datamodel.prisma 和 Schema.graphql 中有一个(我在教程中找不到 User 的两个定义)。如果它们被读入同一个实例,这就是为什么 graphql 认为您正在尝试重新定义 User 类型的原因。删除一个,或者如果适用,将第二个更改为extend type User
应该可以解决语法错误。
添加回答
举报
0/150
提交
取消