import { Request, Response, NextFunction } from 'express'; import { Model } from 'mongoose'; export function MongoGetAll(model: Model) { return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) { const originalMethod = descriptor.value; descriptor.value = async function (req: Request, res: Response, next: NextFunction) { try { let documents = await model.find(); const result = []; for (const document of documents) { const obj = document.toObject(); if (document.image && document.image.data && document.image.contentType) { const base64 = document.image.data.toString('base64'); obj.imageSrc = `data:${document.image.contentType};base64,${base64}`; } delete obj.image; result.push(obj); } req.mongoGetAll = result; } catch (error) { logging.error(error); return res.status(400).json(error); } return originalMethod.call(this, req, res, next); }; return descriptor; }; }