From 7c3f6d05267c43b1cf06564e0cd4f104be9ced88 Mon Sep 17 00:00:00 2001 From: ALGLAVE Ivan <ivan.alglave8@etu.univ-lorraine.fr> Date: Tue, 7 Mar 2023 11:01:52 +0100 Subject: [PATCH] retrieve multiple people from an id array with a single call --- src/people/dao/people.dao.ts | 9 +++++++++ src/people/people.controller.ts | 15 +++++++++++++++ src/people/people.service.ts | 3 +++ 3 files changed, 27 insertions(+) diff --git a/src/people/dao/people.dao.ts b/src/people/dao/people.dao.ts index bb03a1d..b12089f 100644 --- a/src/people/dao/people.dao.ts +++ b/src/people/dao/people.dao.ts @@ -54,6 +54,15 @@ export class PeopleDao { }); }); + findManyById = (idList: string[]): Promise<People[]> => + new Promise((resolve, reject) => { + this._peopleModel.find({ _id: { $in: idList } }, {}, {}, (err, value) => { + if (err) reject(err.message); + if (!value) resolve([]); + resolve(value); + }); + }); + findById = (id: string): Promise<People | void> => new Promise((resolve, reject) => { this._peopleModel.findById(id, (err, value) => { diff --git a/src/people/people.controller.ts b/src/people/people.controller.ts index f887a78..31c2931 100644 --- a/src/people/people.controller.ts +++ b/src/people/people.controller.ts @@ -24,9 +24,24 @@ export class PeopleController { //@UseGuards(AuthGuard('jwt')) @Get() findAll(): Promise<PeopleEntity[] | void> { + console.log( + encodeURIComponent( + JSON.stringify([ + '640703a32ece22f629e3435f', + '640705340ca60d0b09ba2b88', + '640706a80ca60d0b09ba2cd2', + ]), + ), + ); return this._peopleService.findAll(); } + @Get('/many/:list') + findMany(@Param() params: { list: string }): Promise<PeopleEntity[] | void> { + const idList = JSON.parse(params.list); + return this._peopleService.findMany(idList); + } + @UseGuards(AuthGuard('jwt')) @Get(':id') findOne(@Param() params: { id: string }): Promise<PeopleEntity | void> { diff --git a/src/people/people.service.ts b/src/people/people.service.ts index 3f03971..36fc9bd 100644 --- a/src/people/people.service.ts +++ b/src/people/people.service.ts @@ -13,6 +13,9 @@ export class PeopleService { findAll = (): Promise<PeopleEntity[] | void> => this._peopleDao.find(); + findMany = (idList: string[]): Promise<PeopleEntity[] | void> => + this._peopleDao.findManyById(idList); + findOne = (id: string): Promise<PeopleEntity | void> => this._peopleDao.findById(id); -- GitLab