Я пытаюсь реализовать очень простой интерфейс GraphQL в Node.js, но независимо от того, что я делаю, я не могу получить метод resolve
моего типа foo
для запуска. Когда я запускаю следующий код в модульном тесте, он выполняется успешно, но я вижу из (отсутствия) вывода консоли, что resolve
не был вызван, и в результате я получаю пустой объект обратно, когда я вызываю graphql(FooSchema, query)
.Почему GraphQL (на Node.js) не вызывает мой метод «решения»?
Может ли кто-нибудь более опытный с GraphQL предположить, что я могу делать неправильно? Я совершенно сбит с толку относительно того, как вся операция может даже завершиться успешно, если GraphQL не может найти и вызвать метод, который должен возвращать результаты ...
const fooType = new GraphQLInterfaceType({
name: `Foo`,
description: `A foo`,
fields:() => ({
id: {
description: `The foo's id`,
type: new GraphQLNonNull(GraphQLInt),
},
title: {
description: `The foo's title`,
type: new GraphQLNonNull(GraphQLString),
}
})
});
const queryType = new GraphQLObjectType({
fields: {
foo: {
args: {
id: {
description: 'ID of the foo',
type: new GraphQLNonNull(GraphQLString)
}
},
resolve: (root, { id }) => {
console.log(12345);
return getFoo(id)
},
type: fooType,
}
},
name: 'Query',
});
export default new GraphQLSchema({
query: queryType,
types: [fooType],
});
// In test:
const query = `
foo {
title
}
`;
const result = graphql(FooSchema, query); // == {}
Благодарим за предложение: Я копировал/вставлял из примера Star Wars И я не должен был уделять достаточное внимание тем, что я копирую. Однако изменение 'fooType' в качестве нового' GraphQLObjectType' не решает мою проблему: мой 'resolve' до сих пор не вызван, а вызов' graphql' по-прежнему возвращает пустой объект :( – machineghost
Что возвращает 'getFoo (id) 'делать точно? –
Ничего (или, быть более точным, это не имеет значения), потому что он даже не вызван. Это корневая проблема: если бы я мог просто получить' graphql', чтобы вызвать его (через 'resolve') . d установить – machineghost