effect_tw
@effect_tw

GraphiQl в ответе data, все поля null. Почему?

Почему результат полей всегда null. Первый запуск.
код ошибки

5e398aab5ea43949108085.png
\\\\\
код schema.js
const graph = require('graphql');
const {GraphQLObjectType,GraphQLString,GraphQLSchema,GraphQLID,GraphQLInt,GraphQLList} = graph;

let Directors = [
    {'id':"1",'name':'Zigfrid',},
    {'id':"2",'name':'Fill'},
];


const DirectorSome = new GraphQLObjectType({
    name:'Director',
    fields: ()=>({
        id: {type:GraphQLString},
        name: {type:GraphQLString},
    }),
});

const Query = new GraphQLObjectType({
    name: 'Query',
    fields: {
        direct: {
            type: DirectorSome,
            args:{id:{type: GraphQLString}},
            resolve(parent,args){
                return Directors.filter((arr)=>(arr.id === args.id));
            }
        },
    }
});


module.exports = new GraphQLSchema({
    query: Query,
});

\\\\\\
Код сервера
const express = require('express');
const mongoose = require('mongoose');
const graphQlHTTP = require('express-graphql')
const schema = require('./server/schema/schema');
const app = express();

app.use('/graphql',graphQlHTTP({
    schema,
    graphiql:true,
}));

let start = async ()=>{
    try{
        let server = app.listen(0,()=>{console.log(`SERVER START ON PORT${server.address().port}`)})
    }
    catch(e){
        console.log(`Error in start server`,e.message);
    }
}
start();
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fi1osof
@Fi1osof
JS fullstack developer
Вероятней всего вы массив возвращаете вместо объекта, то есть [...] вместо {...}. Попробуйте так:
const [value] = Directors.filter((arr)=>(arr.id === args.id));
return value;


А лучше вообще так:
return Directors.find((arr)=>(arr.id === args.id));


Просто filter возвращает отфильтрованный массив, а не найденный в нем элемент.

То есть в ответ ему приходит объект (а массив - это тоже объект), но у него нет свойств name и id.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы