对于 graphql 中的非空字段,不能 return null
Cannot return null for non-nullable field in graphql
我有一个 Apollo 服务器查询 returns 一组基于 userId
值的电影:
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": "Cannot return null for non-nullable field Movie.original_title."
由于 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]
解决了这个问题,因为现在我的架构反映了我的解析器。
我有一个 Apollo 服务器查询 returns 一组基于 userId
值的电影:
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": "Cannot return null for non-nullable field Movie.original_title."
由于 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]
解决了这个问题,因为现在我的架构反映了我的解析器。