【发布时间】:2022-02-02 03:15:51
【问题描述】:
我最近从 type-graphql 切换到了 nestjs,以利用 nestjs 的功能。
我曾经能够根据查询参数和数据库结果在解析器中设置字段,例如距离和平均评分等。
@Resolver(Provider)
export class ProviderResolver {
@Query((returns) => [Provider])
async providers(@Args() { location, distance }: ProviderFilterArgs): Promise<Provider[]> {
let providers: Provider[] = await ProviderModel.find();
providers.map((provider) => {
provider.distanceToProvider = getDistance(
location ? location : [fooNumber, barNumber], // default coords
provider.locations[0].geocode
);
return provider;
});
return providers;
}
}
这种方法似乎不适用于nestjs,因为架构与实体类型冲突(实体具有“distanceToProvider”字段,而猫鼬架构则没有)。我做错了吗,还是返回映射的数据库结果是一种不好的做法?
也许可以在@ResolveField 中计算和添加字段,但据我了解,这些字段更多地用于使用另一个数据库调用填充引用的 Id。是否可以在 mongodb 聚合函数中做到这一点?
在返回响应之前我应该如何添加字段?
【问题讨论】: