typescript - TypeGraphQL_如何避免创建未输入的字段
问题描述
@Resolver()
export class NameCardCreateResolver {
@Mutation(() => BaseMutationResponse)
async namecardCreate(
@Arg("chosenSNSUrls", () => SNSInput)
{ facebook, twitter, instagram, blog, youtube }: SNSInput,
@Arg("owner", () => NameCardOwner)
{ ownerEmail }: NameCardOwner
): Promise<BaseMutationResponse> {
const response = new BaseMutationResponse();
try {
await NameCardModel.create({
sns: {
facebook,
twitter,
instagram,
blog,
youtube
},
owner: {
email: ownerEmail,
},
还有 SNSINPUT 类型,,
@InputType()
export class SNSInput {
@Field({ nullable: true, defaultValue: null })
facebook?: string;
@Field({ nullable: true, defaultValue: null })
instagram?: string;
@Field({ nullable: true, defaultValue: null })
youtube?: string;
@Field({ nullable: true, defaultValue: null })
blog?: string;
@Field({ nullable: true, defaultValue: null })
twitter?: string;
}
它运作良好,但它是在我的 MongoDB 领域中创建的。
如何防止创建不必要的空处理 sns 字段?
解决方案
如果您不想将字段保存到 MongoDB,请将其值设置为undefined
(而不是null
)。这应该从文档中完全省略该字段。
您可能必须defaultValue: null
从 typegraphql 注释中删除,因为这可能会将其设置为null
默认值。
@InputType()
export class SNSInput {
@Field({ nullable: true })
facebook?: string;
@Field({ nullable: true })
instagram?: string;
@Field({ nullable: true })
youtube?: string;
@Field({ nullable: true })
blog?: string;
@Field({ nullable: true })
twitter?: string;
}
或者,如果您想保留null
输入中的值,您要么必须显式覆盖它们,undefined
要么使用完全删除它们delete
。
推荐阅读
- javascript - Azure 事件中心侦听事件
- javascript - 为什么 preventDefault() 在特定情况下不起作用?
- python - 构建python应用程序并连接到远程数据库
- python - 将两个文本文件合并到 scv 文件中
- java - 当被要求提供更精确的答案时,平方根计算器会中断
- clips - 在 Defrule 中查找与条件匹配的所有事实
- kepserverex - 是否可以使用 VB.NET 应用程序在 kepserver 中读取/写入标签?
- design-patterns - 输入端口在清洁架构中的作用
- python - 如何使用 Django rest_auth 创建自定义登录视图?
- java - 手动实现 String.length 方法