我试图创建一个graphql突变来编辑我的应用程序用户的帐户详细信息。帐户有性别和生日字段(可选字段)。在我的InputType我有:
@InputType()
export class UserEditAccountDetailsInput {
@Field()
email: string;
@Field(() => String, { nullable: true })
birthday?: string | null
@Field(() => String, { nullable: true })
gender?: string | null
}
对于ObjectType:
@Field({ nullable: true })
@Column({ default: null })
gender?: string
@Field({ nullable: true })
@Column({ default: null, type: 'date' })
birthday?: string
我已经试过了:
@Field({ nullable: true })
@Column({ default: null, type: 'date' })
birthday?: string | null
但是我收到这个错误:
NoExplicitTypeError:无法从TypeScript推断GraphQL类型反射系统。您需要为的"生日"提供显式类型"用户"类。
我也试着像这样指定生日和性别的类型:
@Field(() => String, { nullable: true })
@Column({ default: null, type: 'date' })
birthday?: string
但是问题没有解决。
如果我没有指定"| null"在我的ObjectType上,它似乎工作得很好,但我有这个TypeScript问题:
属性'gender'的类型不兼容。类型'string | null | undefined'不能赋值给类型'(()=>QueryDeepPartialEntity
我实现了相同的场景,但我没有得到一个错误。也许图形版本有问题。如果你用我将在下面发布的版本更新版本,你可以解决这个问题:
"graphql": "^15.3.0" "type-graphql": "^1.1.1" "@types/graphql": "^14.5.0" "typescript": "^4.7.4"
顺便说一下,tsconfig .json也可能有错误:
{ "compilerOptions": { "baseUrl": "./src", "outDir": "./dist", "module": "commonjs", "target": "es2019", "lib": ["es6", "esnext.asynciterable"], "sourceMap": true, "allowJs": true, "moduleResolution": "node", "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, "noImplicitThis": true, "noImplicitAny": false, "strictNullChecks": true, "suppressImplicitAnyIndexErrors": true, "noUnusedLocals": false, "esModuleInterop": true, "skipLibCheck": true, "experimentalDecorators": true, "emitDecoratorMetadata": true, "types": ["node"], "resolveJsonModule": true }, "exclude": [ "node_modules", "build", "scripts", "acceptance-tests", "webpack" ] }