Итак, на сайте GraphQL есть S # * t документация, насколько я могу судить по вложенным запросам, таким как специфика пользователя и его сумасшествие (я серьезно хочу вырвать меня из головы прямо сейчас). Может кто-нибудь объяснить мне, как работают револьверы и почему не работает то, что я делаю?
ПРОБЛЕМА:
Я создал следующий файл index.js для моего API GraphQL:
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: () => 'John.Doe@gmail.com'
},
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
}
}
Почему это null
?!?! Я даже не пытался увлечься user(id: $ID): [User]
итерациями или чем-то похожим на передачу аргументов или функций, и это уже давало мне палку!
Чего мне не хватает в работе вложенных полей?
EDIT:
вау ... хорошо, это работает?
user: () => ({
firstName: 'John',
lastName: 'Doe',
email: 'John.Doe@gmail.com',
socialMedia: {
facebook: 'John Doe Facebook',
instagram: 'John Doe Instagram',
twitter: 'John Doe Twitter'
}
}),
Какое жесткое правило для этой ерунды ??