首页 > 解决方案 > hasOwnProperty 使用 Typescript 总是返回 false

问题描述

我在 TypeGraphQL 中实现了一个过滤器,我首先检查该类是否具有用户请求过滤的属性。我正在尝试使用 hasOwnProperty 但即使属性正确,它也总是返回 false 。

在解析器中查询:

@Query(() => [Dog] )
  async dogs(
    @Arg('filter') filter: FilterInput
  ): Promise<Dog []> {
    console.log(filter.field)
    console.log(Dog.prototype.hasOwnProperty(filter.field))

    const dogs = await Dog.find({where: {[filter.field]: `${filter.value}`}})

    return dogs
  }

狗实体:

@ObjectType()
@Entity()
export class Dog extends BaseEntity {
  @Field(() => ID)
  @PrimaryGeneratedColumn()
  id: number

  @Field()
  @Column()
  name: string

  @Field()
  info(@Root() parent: Dog): string {
    return `gender: ${parent.gender} ; name: ${parent.name}`
  }

  @Field()
  @Column()
  gender: string
}

过滤器输入类型:

import { InputType, Field } from "type-graphql";


@InputType()
export class FilterInput {
  @Field()
  field: string

  @Field()
  value: string
}

标签: javascriptresolvertypegraphql

解决方案


我能够用枚举解决这个问题,只需将输入字符串与枚举值枚举进行比较:

export enum dogFields {
  name = 'name',
  gender = 'gender'
}

推荐阅读