我正在使用graphql-js
npm软件包(不是Apollo Server或类似的软件包)。我将架构分离到不同的文件中,因此需要以某种方式进行组合。
import { graphql, buildSchema } from 'graphql';
import { schema as bookSchema } from './book';
import { schema as authorSchema } from './author';
import root from './root';
const schema = buildSchema(bookSchema + authorSchema);
export default ({ query, variables }) => graphql(schema, query, root, null, variables);
https://github.com/graphql/graphql-js
在author.js中:
export const schema = `
type Query {
getAuthors: [Author]
}
type Author {
name: String
books: [Book]
}
`;
在book.js中:
export const schema = `
type Query {
getBooks: [Book]
}
type Book {
title: String
author: Author
}
`;
可以很好地组合Book
和Author
类型,但出现此错误:
错误:只能有一种名为“查询”的类型。
我已经在其他库中看到extend
用于解决此问题,但是当我尝试getBooks
时,查询并没有在操场上进行。
export const schema = `
extend type Query {
getBooks: [Book]
}
type Book {
title: String
author: Author
}
`;