javascript - GraphQL 查询返回错误“不能为不可为空的字段返回 null”
问题描述
我有一个基本的 GraphQL 查询设置,如下所示:
查询.js:
const Query = {
dogs(parent, args, ctx, info) {
return [{ name: 'Snickers' }, { name: 'Sunny' }];
},
};
module.exports = Query;
架构.graphql:
type Dog {
name: String!
}
type Query {
dogs: [Dog]!
}
我创建了一个createServer()
用于启动服务器的函数,如下所示:
const { GraphQLServer } = require('graphql-yoga');
const Mutation = require('./resolvers/Mutation');
const Query = require('./resolvers/Query');
const db = require('./db');
function createServer() {
return new GraphQLServer({
typeDefs: 'src/schema.graphql',
resolvers: {
Mutation,
Query,
},
resolverValidationOptions: {
requireResolversForResolveType: false,
},
context: req => ({ ...req, db }),
});
}
module.exports = createServer;
然后我尝试dogs
如下查询:
query {
dogs {
name
}
}
但是,我没有从狗数组中获取名称,而是收到以下错误:
{
"data": null,
"errors": [
{
"message": "Cannot return null for non-nullable field Query.dogs.",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"dogs"
]
}
]
}
似乎是什么导致了这个错误?
解决方案
这个问题来自 AWS 要求 dynamoDB 表中的某些标准值,例如 createdAt 和 updatedAd,只需在 dynamo db 中手动添加这些字段并带有时间戳以便进一步测试。总是需要通过 id 请求突变,当我的架构是由放大代码生成创建时,我不清楚这一点......
推荐阅读
- csv - symfony 无法导出带有日期时间数据的 csv
- laravel - 如何在子域中托管后修复 laravel 应用程序中的 403 Forbidden 错误
- javascript - Javascript:如何在没有 ID 和 Class 的情况下向元素添加类?
- python - ModuleNotFoundError:未找到该模块的规范
- java - 失眠多部分突变
- python - 使用参数名称中需要 - (破折号/连字符)的cherrypy实现API
- microsoft-graph-api - Sharepoint 文件上传随机导致访问被拒绝错误
- function - 如何将函数的结果放入 Flutter 中的 Text 小部件中?
- reactjs - 如何强制 Apollo 客户端将缓存数据用于详细视图页面
- bash - 应用程序端出现“echo > /dev/tcp/localhost/8877”时的异常