javascript - 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
}
解决方案
我能够用枚举解决这个问题,只需将输入字符串与枚举值枚举进行比较:
export enum dogFields {
name = 'name',
gender = 'gender'
}
推荐阅读
- python-3.x - Django 休息框架工作;组合来自不同模型的数据不起作用
- reactjs - 我的 Redux 状态没有更新——即使旧的和新的状态不相等
- python - 如何在 AI 平台训练中使用 pandas-gbq 和 BigQuery Storage API?
- jenkins - 如何在 Jenkins 中获取 Jenkins 旧版本
- azure - Azure 工作项搜索未显示所有用户的结果
- r - 在没有 funs() 的情况下将其他列用作 summarise_at() 和 summarise_all() 中的函数的参数
- asp.net-core - 使用 blazor 服务器应用程序导入大文件时的实时日志机制
- intellij-idea - Intellij IDEA 中的 Azure DevOps 插件仅显示一个存储库
- python-sphinx - 在 Sphinx RTD 站点的每个页面顶部添加警告指令
- selenium - 使用 Selenium 和 Chrome 保存为 PDF