Msgstr "Тип RootQueryType должен определять одно или несколько полей." }
Попытка заставить GraphQL работать с JavaScript. Не уверен, где моя ошибка.
Мой код
const graphql = require('graphql');
const _ = require('lodash');
const {
GraphQLObjectType,
GraphQLString,
GraphQLInt,
GraphQLSchema
} = graphql;
const users = [
{ id: "23", firstName: "Bill", age: 20},
{ id: "47", firstName: "Sam", age: 21}
];
const UserType = new GraphQLObjectType({
name: 'User',
fields: {
id: {type: GraphQLString},
firstName: {type: GraphQLString},
age:{type: GraphQLInt}
}
});
const RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: {
user: {
type: UserType,
args: { id: { type: GraphQLString } },
resolve(parentValue, args) {
return _.find(users, { id: args.id });
}
}
}
});
module.exports = new GraphQLSchema ({
query: RootQuery
});
я получаю
{ "errors": [ { "message": "Тип RootQueryType должен определять одно или несколько полей." } ] }
Почему это не работает?
2 ответа
Вы забыли использовать функцию стрелки
const UserType = new GraphQLObjectType({
name: 'User',
fields:()=>( {
id: {type: GraphQLString},
firstName: {type: GraphQLString},
age:{type: GraphQLInt}
});
Я считаю, что ваша ошибка просто в вашем запросе. Вы используете RootQueryType fields
объект, чтобы сделать ваши конечные точки запроса. fields
Объект в вашем случае содержит только один запрос: user
, Однако вы пытаетесь сделать запрос для User
, который отличается.
const RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: {
// The items listed here are going to be your root query endpoints.
// Which in this case is only `user`.
user: {
type: UserType,
args: { id: { type: GraphQLString } },
resolve(parentValue, args) {
return _.find(users, { id: args.id });
}
}
}
});
Так что вам нужно сделать ваш запрос, используя user
,
Кроме того, вы должны убедиться, что вы делаете свой запрос правильно. Базовый синтаксис запроса для достижения цели выглядит следующим образом:
{
user(id: "23") {
id
firstName
age
}
}
Дайте мне знать, если это работает для вас.
Некоторая документация по запросам: