2025-07-09 01:04:18 +02:00

33 lines
1.1 KiB
TypeScript

import { Request, Response, NextFunction } from 'express';
import { Model } from 'mongoose';
export function MongoGetAll(model: Model<any>) {
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;
};
}