Я получил ошибку с преобразователем graphql в express

#javascript #node.js #express #graphql

#javascript #node.js #экспресс #graphql

Вопрос:

в настоящее время я пытаюсь использовать graphql, но я получил эту ошибку (не удается вернуть null для ненулевого поля Person.name.) Я пытался это исправить, но я не смог, пожалуйста, помогите мне

App.js

 import resolvers from './graphql/resolvers';

const app = express();
const Router = express.Router();

app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));



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



export default app;
  

schema.js

 import { buildSchema } from 'graphql';

const schema = buildSchema(`
    type Person {
        name: String!
        age: Int!
        gender: String!
    }

    type Query {
        people: [Person]!
        person(id: Int!): Person
    }
`);

export default schema;
  

resolvers.js

 import { people, getById } from '../fakedb';

const resolvers = {
    Query {
        people: () => people,
        person: (_, { id }) => getById(id)
    } 
export default Query;
  

fakedb.js

     export const people = [
    {
        id: 1,
        name: "Andy",
        age: 23,
        gender: "male"
    },
    {
        id: 2,
        name: "Nam",
        age: 26,
        gender: "female"
    },
    {
        id: 3,
        name: "Jang",
        age: 21,
        gender: "male"
    },
    {
        id: 4,
        name: "Duk",
        age: 23,
        gender: "male"
    }
];

export const getById = id => {
    const filteredPeople = people.filter(person => person.id === id);
    return filteredPeople[0];
};
  

Я проверил свой db.js много раз, но я не думаю, что это проблема
Я думаю, что ошибка исходит из другого места
но я не могу ее найти
Кто-нибудь мне поможет?
Спасибо

Комментарии:

1. Пожалуйста, укажите запрос POST / graphql, который вы выполняете, который вызывает ошибку

2. Ваш resolvers.js отсутствует закрытие }; и должно выполняться export default resolvers; вместо export default Query; .

Ответ №1:

Похоже, что в вашем коде нет никаких проблем, но вы выполняете запрос для идентификаторов, которые присутствуют в массиве fakedb people? Пожалуйста, поделитесь запросом, который вы передаете с id.