无法为graphql中的不可空字段返回null
Posted
技术标签:
【中文标题】无法为graphql中的不可空字段返回null【英文标题】:Cannot return null for non-nullable field in graphql 【发布时间】:2021-10-29 23:39:05 【问题描述】:我有一个 Apollo 服务器查询,它根据 userId
value 返回一组电影:
moviesFromUser: async (root, args) =>
const movie = await prisma.movie.findMany(
where: userId: args.userId,
);
console.log(movie);
return movie;
,
在沙盒中,我有一个查询来获取基于 userId
的电影:
query moviesFromUser
moviesFromUser(userId: 1)
original_title
当我运行这个查询时,我在 Apollo 服务器的控制台日志中看到了我请求的电影:
[
id: 251,
original_title: 'Dune',
tmdb_id: 2,
poster_path: 'cDbNAY0KM84cxXhmj8f0dLWza3t.jpg',
userId: 1
,
id: 252,
original_title: 'Batman',
tmdb_id: 3,
poster_path: 'asdadsdasadsadsdas.jpg',
userId: 1
]
但操场上的实际反应是:
"message": "不能为不可为空的字段 Movie.original_title 返回 null。"
【问题讨论】:
【参考方案1】:感谢 shankie_san 他在这里的回答解决了这个问题 > Apollo GraphQL "Cannot return null for non-nullable field Mutation.createUser"
我的问题是这个解析器:
moviesFromUser: async (root, args) =>
const movie = await prisma.movie.findMany(
where: userId: args.userId,
);
console.log(movie);
return movie;
,
返回一个电影数组,但我的架构返回一个电影对象:
type Query
moviesFromUser(userId: Int!): Movie
将moviesFromUser(userId: Int!): Movie
更改为moviesFromUser(userId: Int!): [Movie]
解决了这个问题,因为现在我的架构反映了我的解析器。
【讨论】:
以上是关于无法为graphql中的不可空字段返回null的主要内容,如果未能解决你的问题,请参考以下文章
GraphQL Apollo 无法为不可空返回 Null [重复]
Apollo graphql 正在为 mongodb 中的空子文档返回空数据
graphql序列化数据加载器问题,对于不可为null的字段[重复项],无法返回null