我正在使用 Typescript 和 firebase,并且我有一个带有此功能的小型抽象层,可以根据其字段名称和值搜索唯一的文档库。
where<K extends keyof (T & DocumentEntity)>(fieldName: K, operator: WhereFilterOp, value: unknown): Query<T> {
this.addCriterion(new WhereCriterion(fieldName as string, operator, value));
return this;
}
当我想使用文档底部的字段进行查询时,这很有效,例如:
模型:
order: Order = {
orderId: baseId
item: { ... }
price: { ... }
restaurant: {
restaurantId: nestedId
name: chezGaston
}
}
询问:
const order = await this.documentPersistence.findUnique(
new Query<order>().where('orderId', '==', incomingOrderId)
);
但现在我想根据嵌套对象的 id 进行查询。
const order = await this.documentPersistence.findUnique(
new Query<order>()
.where('restaurant.restaurantId', '==', integration),
);
这给了我一个静态错误TS2345: Argument of type '"restaurant.restaurantId"' is not assignable to parameter of type 'keyof Order'.
如何修复我的函数,使其接受嵌套对象作为我的对象的键?
我不想用// @ts-ignore