繁体   English   中英

无法为 GraphQL 查询中的不可空字段返回 null

[英]Cannot return null for non-nullable field in a GraphQL query

const { ApolloServer, gql } = require('apollo-server-express');
const express = require('express');
// dummy data
const books = [
  { id: 1, title: 'book1', author: 'author1' },
  { id: 2, title: 'book2', author: 'author2' },
  { id: 3, title: 'book3', author: 'author3' },
];
const typeDefs = gql`
  type Book {
    id: ID!
    title: String!
    author: String!
  }
  type Query {
    hello: String
    books: [Book!]!
    book(id: ID!): Book
  }
`;
const resolvers = {
  Query: {
    hello: () => 'Hello World',
    books: () => books,
    book: (parent,args) => {
      return books.find((book) => book.id === args.id);
    },
  },
};
async function apolloServer(typeDefs, resolvers) {
  try {
    const server = new ApolloServer({ typeDefs, resolvers });
    const app = express();
    await server.start();
    server.applyMiddleware({ app, path: '/api' });
    app.listen(6999, () => console.log('Server is running on 6999'));
  } catch (e) {
    console.log(e);
  }
}
apolloServer(typeDefs, resolvers);

我在 GraphQL 中得到的结果是在 localhost 6999 运行以下查询时玩 Ground 是:- “消息”:“无法为不可为空的字段 Query.book 返回 null。” ,我正在编写以下查询:-

query($bookId: ID!){
  book(id: $bookId) {
    id
  }
}

将变量传递为

{
  "bookId": "2"
}

在代码中,我似乎试图在 'ID' 和 'Int' 类型之间“===”,在将 book args 更改为 book(id: Int) 后,我的查询得到了解决

const typeDefs = gql`
  type Book {
    id: ID!
    title: String!
    author: String!
  }
  type Query {
    hello: String
    books: [Book!]!
    book(id: ID!): Book
  }
`;

我收到以下回复

{
  "data": {
    "book": {
      "id": "1",
      "title": "book1"
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM