Итак, на сайте GraphQL есть документация по S # * t, насколько я могу судить по вложенным запросам, таким как пользовательские особенности, и это сводит меня с ума (я серьезно хочу вырвать себе волосы прямо сейчас). Может кто-нибудь объяснить мне, как работают револьверы и почему то, что я делаю, не работает?
ПРОБЛЕМА: я создал следующий файл index.js для своего GraphQL API:
var express = require('express');
var graphqlHTTP = require('express-graphql');
var { buildSchema } = require('graphql');
// Define Schemas
var schema = buildSchema(`
type Query {
user: User
}
type User {
firstName: String
lastName: String
email: String
socialMedia: SOCIALMEDIA
}
type SOCIALMEDIA {
facebook: String
instagram: String
twitter: String
}
`);
// Define resolver functions
var root = {
User: {
firstName: () => 'John',
lastName: () => 'Doe',
email: () => '[email protected]'
},
SOCIALMEDIA: {
facebook: () => 'John Doe Facebook',
instagram: () => 'John Doe Instagram',
twitter: () => 'John Doe Twitter'
}
};
var app = express();
app.use('/', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
app.listen(8080, () => console.log('Now browse to localhost:8080'));
И, несмотря на все мои усилия, когда я отправляю следующий запрос:
{
user {
firstName
}
}
Получаю такой ответ:
{
"data": {
"user": null
}
}
Почему _4 _?!?! Я даже не пытался увлечься user(id: $ID): [User]
итерациями или чем-то похожим на передачу аргументов или функций, и это уже дает мне палку!
Что мне не хватает в работе вложенных полей?
РЕДАКТИРОВАТЬ: вау ... все работает?
user: () => ({
firstName: 'John',
lastName: 'Doe',
email: '[email protected]',
socialMedia: {
facebook: 'John Doe Facebook',
instagram: 'John Doe Instagram',
twitter: 'John Doe Twitter'
}
}),
Какое жесткое правило для этой ерунды ??
buildSchema
; используйтеmakeExecutableSchema
изgraphql-tools
. Дополнительные сведения см. В этом ответе. - person Daniel Rearden   schedule 18.01.2019