#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.