如何在NestJS中从用户表获取同一User_ID的多条数据?
在NestJS中通过TypeORM查询同一User_ID对应的多条数据
你的需求是基于TypeORM实现查询同一User_ID匹配的多条用户数据,现有代码里的findOne方法仅能返回单条结果,只需新增一个使用findBy方法的查询函数即可实现多数据查询:
修改后的UsersService完整代码
import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { usertbl } from './usertbl.entity'; @Injectable() export class UsersService { constructor( @InjectRepository(usertbl) private UsertblRepository: Repository<usertbl>, ) {} findAll(): Promise<usertbl[]> { return this.UsertblRepository.find(); } findOne(User_ID: string): Promise<usertbl> { return this.UsertblRepository.findOneBy({ User_ID }); } // 新增:查询同一User_ID的多条数据 findByUserId(User_ID: string): Promise<usertbl[]> { return this.UsertblRepository.findBy({ User_ID }); } createusertbl(Usertbl: usertbl): Promise<usertbl> { return this.UsertblRepository.save(Usertbl); } }
关键说明
- TypeORM的
findBy方法会根据传入的条件返回所有匹配的实体数组,而findOneBy仅返回第一个匹配的实体(或null),正好满足你查询多条数据的需求。 - 新增的
findByUserId方法接收User_ID参数,返回类型为Promise<usertbl[]>,与findAll保持一致的数组返回格式。
控制器中调用示例(可选)
如果需要在控制器中对外提供这个查询接口,可以这样写:
import { Controller, Get, Param } from '@nestjs/common'; import { UsersService } from './users.service'; import { usertbl } from './usertbl.entity'; @Controller('users') export class UsersController { constructor(private readonly usersService: UsersService) {} @Get(':userId') async getUsersByUserId(@Param('userId') userId: string): Promise<usertbl[]> { return this.usersService.findByUserId(userId); } }
内容的提问来源于stack exchange,提问作者utsho hoque
相关产品推荐
相关产品推荐

