@@ -251,16 +251,56 @@ class CheckService implements ICheckService {
251251 createdAt : { $gte : startDate , $lte : new Date ( ) } ,
252252 } ;
253253 }
254- // Has-more pagination: over-fetch by 1 to infer existence of a next page
254+
255255 const pageSizePlusOne = rowsPerPage + 1 ;
256256 const docs = await Check . find ( match )
257- . populate ( { path : "metadata.monitorId" , select : "name" } )
258257 . sort ( { createdAt : - 1 } )
259258 . skip ( page * rowsPerPage )
260- . limit ( pageSizePlusOne ) ;
259+ . limit ( pageSizePlusOne )
260+ . select ( {
261+ _id : 1 ,
262+ status : 1 ,
263+ httpStatusCode : 1 ,
264+ message : 1 ,
265+ responseTime : 1 ,
266+ createdAt : 1 ,
267+ "metadata.monitorId" : 1 ,
268+ "metadata.teamId" : 1 ,
269+ "metadata.type" : 1 ,
270+ } ) ;
261271
262272 const hasMore = docs . length > rowsPerPage ;
263- const checks = hasMore ? docs . slice ( 0 , rowsPerPage ) : docs ;
273+ const limited = hasMore ? docs . slice ( 0 , rowsPerPage ) : docs ;
274+
275+ const monitorIds = Array . from (
276+ new Set (
277+ limited
278+ . map ( ( d ) => d ?. metadata ?. monitorId )
279+ . filter ( ( v ) : v is mongoose . Types . ObjectId => ! ! v )
280+ . map ( ( v ) => v . toString ( ) )
281+ )
282+ ) ;
283+
284+ let nameById = new Map < string , string > ( ) ;
285+ if ( monitorIds . length > 0 ) {
286+ const monitors = await Monitor . find ( { _id : { $in : monitorIds } } ) . select ( {
287+ _id : 1 ,
288+ name : 1 ,
289+ } ) ;
290+ nameById = new Map ( monitors . map ( ( m ) => [ m . _id . toString ( ) , m . name ] ) ) ;
291+ }
292+
293+ const checks = limited . map ( ( doc ) => {
294+ const asObj = doc . toObject ( ) ;
295+ const idStr = asObj ?. metadata ?. monitorId ?. toString ?.( ) ?? "" ;
296+ const name = idStr ? nameById . get ( idStr ) : undefined ;
297+ if ( name ) {
298+ asObj . metadata = asObj . metadata || { } ;
299+ ( asObj . metadata as any ) . monitorId = { name } as any ;
300+ }
301+ return asObj as ICheck ;
302+ } ) ;
303+
264304 return { checks, hasMore } ;
265305 } ;
266306
0 commit comments