Реализовать несколько интерфейсов в graphql
Я использую релейный компилятор, и он не позволяет мне скомпилировать схему с типом, который реализует несколько интерфейсов. Я сделал небольшой тестовый проект:
package.json
{
"scripts": {
"relay": "relay-compiler --src ./ --schema schema.graphqls"
},
"dependencies": {
"react-relay": "1.5.0"
},
"devDependencies": {
"relay-compiler": "1.5.0"
}
}
schema.graphqls
interface First {
a: String
}
interface Second {
b: String
}
type Something implements First, Second {
a: String
b: String
}
test.js
import { graphql } from "react-relay";
graphql`fragment Test_item on Something {
a
b
}`;
Если вы запустите это с помощью npm run relay (после установки npm), вы получите ошибку:
Error: Error loading schema. Expected the schema to be a .graphql or a .json
file, describing your GraphQL server's API. Error detail:
GraphQLError: Syntax Error: Unexpected Name "Second"
Есть идеи, почему это происходит?
1 ответ
Решение
Вы должны использовать амперсанд вместо запятой для нескольких интерфейсов. Смотрите здесь: http://facebook.github.io/graphql/draft/
type Something implements First & Second