对于 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] 解决了这个问题,因为现在我的架构反映了我的解析器。