Тип входного объекта XXX должен определять одно или несколько полей в призме 2.0 - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть следующий schema.prisma файл:

model Account {
  id Int @default(autoincrement()) @id
  name String
  transactions Transaction[]
}

model Transaction {
  id Int @default(autoincrement()) @id
  accountId Int
  account Account @relation(fields: [accountId], references: [id])
}

Я могу выполнить

npx prisma migrate save --experimental
npx prisma migrate up --experimental --verbose
npx prisma generate

без ошибок и база данных выглядит нормально (этот снимок экрана также содержит валюту, но не имеет влияние на эту проблему).

enter image description here

Но когда я выполняю ApolloServer, использующий nexusPrismaPlugin, у меня появляется ошибка:

Using ts-node version 8.9.0, typescript version 3.8.3
Error: Input Object type TransactionCreateWithoutAccountInput must define one or more fields.
    at assertValidSchema (/home/daniel/pro/cash/core/node_modules/graphql/type/validate.js:71:11)
    at assertValidExecutionArguments (/home/daniel/pro/cash/core/node_modules/graphql/execution/execute.js:136:35)
    at executeImpl (/home/daniel/pro/cash/core/node_modules/graphql/execution/execute.js:86:3)
    at Object.execute (/home/daniel/pro/cash/core/node_modules/graphql/execution/execute.js:64:63)
    at Object.generateSchemaHash (/home/daniel/pro/cash/core/node_modules/apollo-server-core/src/utils/schemaHash.ts:11:18)
    at ApolloServer.generateSchemaDerivedData (/home/daniel/pro/cash/core/node_modules/apollo-server-core/src/ApolloServer.ts:541:24)
    at new ApolloServerBase (/home/daniel/pro/cash/core/node_modules/apollo-server-core/src/ApolloServer.ts:400:32)
    at new ApolloServer (/home/daniel/pro/cash/core/node_modules/apollo-server-express/src/ApolloServer.ts:88:5)
    at new ApolloServer (/home/daniel/pro/cash/core/node_modules/apollo-server/src/index.ts:36:5)
    at Object.<anonymous> (/home/daniel/pro/cash/core/src/server.ts:5:1)
[ERROR] 01:01:32 Error: Input Object type TransactionCreateWithoutAccountInput must define one or more fields.

Мой код не содержит ничего, связанного с транзакцией. Если я удаляю Transaction, все отлично работает.

В сгенерированном коде я вижу в файле:

node_modules/@prisma/client/index.d.ts

export type TransactionCreateWithoutAccountInput = {

}

...

export type TransactionCreateManyWithoutAccountInput = {
  create?: Enumerable<TransactionCreateWithoutAccountInput> | null
  connect?: Enumerable<TransactionWhereUniqueInput> | null
}

...

export type TransactionUpdateManyWithoutAccountInput = {
  create?: Enumerable<TransactionCreateWithoutAccountInput> | null
  connect?: Enumerable<TransactionWhereUniqueInput> | null
  set?: Enumerable<TransactionWhereUniqueInput> | null
  disconnect?: Enumerable<TransactionWhereUniqueInput> | null
  delete?: Enumerable<TransactionWhereUniqueInput> | null
  update?: Enumerable<TransactionUpdateWithWhereUniqueWithoutAccountInput> | null
  updateMany?: Enumerable<TransactionUpdateManyWithWhereNestedInput> | null
  deleteMany?: Enumerable<TransactionScalarWhereInput> | null
}

Как это исправить?

1 Ответ

0 голосов
/ 27 апреля 2020

Я установил те же schema.prisma, что и у вас выше, и я создал два типа, используя Nexus следующим образом

import { objectType } from '@nexus/schema'

export const Account = objectType({
  name: 'Account',
  definition(t) {
    t.model.id()
    t.model.name()
    t.model.transactions({
      pagination: true,
    })
  },
})

export const Transaction = objectType({
  name: 'Transaction',
  definition(t) {
    t.model.id()
    t.model.account()
  },
})

Я запустил сервер, и в настоящее время он работает правильно. Вы добавили какие-либо другие запросы / мутации помимо этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...