GraphQL - неизвестная директива "уникальная" - PullRequest
0 голосов
/ 15 октября 2018

Я только что обновил 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
}

Обратите внимание, что хотя я использую gql из apollo-server, он использует GraphQL под капотом.

Как вы можете видеть, что является причинойпроблема в том, что я сделал так, чтобы имя пользователя было уникальным.Обновленная версия GraphQL больше не должна иметь эту директиву.Конечно, удаление @unique решает проблему.Я все еще хочу, чтобы имя пользователя было уникальным.Я читал, что вы можете создавать собственные директивы.Как мне это сделать?

1 Ответ

0 голосов
/ 21 марта 2019

Я столкнулся с сценарием, аналогичным вашему, когда вы работали в полностью пользовательских директивах с обновлением graphql-tools до v14, определение этой директивы необходимо в схеме.Вы можете указать полем, объектом, мутацией, где ваша директива будет работать.

directive @requireAuth on FIELD_DEFINITION

Для работы примерно так, на уровне поля

extend type Query {
  me: String! @requireAuth
  user(userId: ID!):User!    
  users: [User]!  
}

И мой класс, который расширяет SchemaDirectiveVisitor, эточто-то вроде этого

import { SchemaDirectiveVisitor } from "apollo-server";

export class YourCustomDirective extends SchemaDirectiveVisitor {
    // Your code for the directive 
}

В предоставленной ссылке есть доступные методы, которые можно использовать, чтобы иметь свою собственную логику на уровне поля, объекта, скаляра и т. д.Надеюсь это поможет.

Схема Директива Посетитель

...