![](/img/trans.png)
[英]GraphQL query returns error "Cannot return null for non-nullable field"
[英]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.