Loopback4中如何通过@GET方法仅返回MySQL表的userID字段所有值
Loopback4 仅返回userID字段的GET接口实现
- 直接用Loopback4 Repository内置的
find方法的字段过滤能力实现,在SQL查询层面就完成字段裁剪,性能远高于拉取全量字段后在内存做剔除的方案 - 前置依赖:确保对应业务表的Repository已经通过
@repository装饰器完成依赖注入,可以在Controller类中直接实例化调用 - 可直接落地的参考代码:
import {get, repository} from '@loopback/repository'; import {YourBusinessModel} from '../models'; import {YourBusinessRepository} from '../repositories'; export class YourTargetController { constructor( @repository(YourBusinessRepository) private businessRepo: YourBusinessRepository, ) {} @GET('/all-user-ids') async fetchAllUserIds(): Promise<Partial<YourBusinessModel>[]> { return this.businessRepo.find({ // 仅声明需要返回的userID字段,其余字段全部自动排除 fields: { userID: true } }) } }
- 返回效果:接口响应为标准JSON数组,数组内每个对象仅包含
userID一个键值对,和需求预期的结构完全一致 - 注意事项:
- 该写法不需要在模型层给其他字段加
@hidden装饰,查询阶段已经完成字段过滤,不会泄露其他字段的数据 - 如果需要调整返回结构,直接对
find返回的结果做简单map映射即可,不需要改动底层查询逻辑
- 该写法不需要在模型层给其他字段加
内容的提问来源于stack exchange,提问作者BreadBoard.ini
相关产品推荐
相关产品推荐

