hasOwnProperty всегда возвращает false, используя Typescript - PullRequest
0 голосов
/ 13 марта 2020

Я реализую фильтр в TypeGraphQL, и я сначала проверяю, есть ли у класса свойство, запрошенное пользователем для фильтрации. Я пытаюсь использовать hasOwnProperty, но он всегда возвращает false, даже если свойство является правильным.

Запрос в Resolver:

@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
  }

Dog Entity:

@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
}

1 Ответ

0 голосов
/ 13 марта 2020

Я смог решить эту проблему с помощью перечисления и просто сравнить входную строку со значениями перечисления enum:

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