No entiendo por qué el tamaño del montón sigue aumentando cuando coloco una consulta de base de datos mongodb dentro de una función en mi controlador.
aquí está mi enrutador
import { Router } from "express"; import profileController from '../controllers/profileController'; class userRouter { public router: Router; constructor() { this.getRoutes(); } getRoutes() { this.router.get("/profile-list", profileController.getProfileList); } } export default new userRouter().router;aquí está mi controlador
import Profile from "../models/profile"; export class profileController { static async getProfileList(req: any, res: any, next: any) { try { const getList = await Profile.find(); res.status(200).json({ status: 200, message: "Success", data: getList, }); } catch (error) { console.log(error); } } }aquí está mi modelo
import * as mongoose from "mongoose"; import { model } from "mongoose"; const profileSchema = new mongoose.Schema({ userId: { type: String, required: true }, name: { type: String, default: ""}, }, { timestamps: true } ); export default model("profile", profileSchema);Tamaño total del almacenamiento dinámico sin la función getProfileList => 135 MB
Tamaño total del almacenamiento dinámico después de colocar la función getProfileList => 255 MB (específicamente después de colocar const getList = await Profile.find(); )
Aquí inspeccioné la memoria y encontré esto en comparación:
TypeObject aumentó de 3 MB a 99 MB (matriz) aumentó de 26 MB a 88 MB
Cualquiera, por favor, ayúdame a entender por qué sucede. o es habitual en tal caso.
El problema es que no está usando ningún límite, por lo que usar await Profile.find(); devolverá todos los documentos en la base de datos, por lo que cuando realice una llamada a su controlador, devolverá todos los datos de la base de datos que pueden aumentar mucho el tamaño del montón.
Puede usar limit y skip para implementar la paginación para su punto final.
También debe considerar el hecho de que la biblioteca Mongoose debe cargarse en su memoria, las conexiones a la base de datos, etc., que también requieren RAM.