【问题标题】:Cannot return null for non-nullable field in graphql无法为graphql中的不可空字段返回null
【发布时间】:2021-10-29 23:39:05
【问题描述】:

我有一个 Apollo 服务器查询,它根据 userIdvalue 返回一组电影:

  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。"

【问题讨论】:

    标签: graphql apollo


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

    【讨论】:

      猜你喜欢
      • 2021-11-27
      • 2021-10-24
      • 2022-01-02
      • 2021-03-18
      • 2019-10-04
      • 2019-10-25
      • 2018-04-10
      • 2019-05-28
      • 2019-07-08
      相关资源
      最近更新 更多