首页 > 解决方案 > 我在 express 中遇到 graphql 解析器错误

问题描述

我目前正在尝试使用graphql,但出现此错误(无法为不可为空的字段Person.name 返回null。)我已尝试修复它,但无法帮助我

应用程序.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;

解析器.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 很多次,但我认为它没有问题我认为错误来自其他地方但我找不到它有人可以帮助我吗?谢谢

标签: javascriptnode.jsexpressgraphql

解决方案


您的代码似乎没有任何问题,但是您是否正在对 fakedb people 数组中存在的 id 进行查询?请分享您通过 id 传递的查询。


推荐阅读