使用TypeORM和MySQL数据库设置null为可选参数



我试图创建一个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"
]
}

相关内容

  • 没有找到相关文章

最新更新