返回 ENUM - 不能为不可为空的字段返回 null

FBS*_*BSO 4 apollo apollo-server prisma graphql-codegen

我正在使用 apollo-server-lambda、Prisma ORM 和 graphql-codegen。

我有getBookById一个返回Book. Book包含一个名为 的枚举BookStatus。我希望能够在操场上以 ENUM 形式返回,但出现错误:

无法为不可为 null 的字段 Book.bookStatus 返回 null。

图书状态 - TypeDef

enum BookStatus {
  OPEN
  DRAFT
  CLOSED
}
Run Code Online (Sandbox Code Playgroud)

书籍 - TypeDef

type Book {
  id: ID!
  title: String!
  bookStatus: BookStatus!
}
Run Code Online (Sandbox Code Playgroud)

getBookById - TypeDef

type Query {
  getBookById(getBookByIdInput: GetBookByIdInput): Book
}
Run Code Online (Sandbox Code Playgroud)

游乐场错误

FBS*_*BSO 5

解决了:

问题是我使用 Prisma 作为 ORM。当我拿到一本新书时,我正在编写代码:

  const foundBook = await prisma.book.findUnique({
    where: {
      id: bookId
    }
  });
Run Code Online (Sandbox Code Playgroud)

问题是这本书是使用以下代码创建的:

  const newBook = await prisma.book.create({
    data: {
      user_id: userId,
      title: title,
      author: author,
      publication_year: publicationYear,
      isbn: isbn,
      photos: photos,
      book_condition: bookCondition,
      exchange_yype: exchangeType,
      book_status: bookStatus,
    },
  });
      
  return newBook;

};
Run Code Online (Sandbox Code Playgroud)

Snake_case 和 CamelCase 的混合造成了这个问题。一旦一切都变成驼峰式,问题就解决了。