【发布时间】:2019-03-19 22:05:48
【问题描述】:
我刚刚将 GraphQL 从版本 0.13.2 更新到 14.0.2。启动服务器时,我收到错误消息:Error: Unknown directive "unique"。这是我的架构:
const { gql } = require('apollo-server')
// type Query is the root query
exports.typeDefs = gql`
type User {
username: String! @unique
password: String!
}
type Query {
getAllUsers: User
}
请注意,尽管我使用的是 apollo-server 中的 gql,但它实际上是在使用 GraphQL。
正如您所看到的,问题是我已经做到了,所以用户名必须是唯一的。 GraphQL 的更新版本不能再有这个指令。果然,删除@unique 解决了这个问题。我仍然希望用户名是唯一的。我读过您可以创建自定义指令。我该怎么做呢?
【问题讨论】:
-
@unique指令特定于某些产品,例如 Prisma,它扩展了 GraphQL.js 提供的基本功能。它不是 GraphQL.js 模块的一部分,因此升级不会有什么不同。您是否在 GraphQL 之上(在 Apollo 服务器之外)使用 Prisma 或其他层? -
如果不是,您想通过
@unique指令引入什么行为?除非您的类型定义用于创建底层数据库模式,这是 Prisma 等工具所做的,否则就如何解决 GraphQL 请求而言,不清楚将字段声明为“唯一”实际上会做什么。 -
@avatarhzh 你找到解决方案了吗?我也被这个问题困住了。
-
@Progeeker 不,我刚刚从架构中删除了
@unique。我使用的是 Mongoose/MongoDB,所以只需要用户名在 Mongoose 模型中是唯一的。
标签: graphql graphql-js