Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

245
Vistas
NODEJS, how do I correctly export this method of my Container class to another JS file where I manage express?

[I'm trying to pass my getAll() method of my Container class found in app.js to my appServer.js file to pass it to the res.send() of my app = express() variable and pass that res.send() to the route "/products"

when I try to run the server it throws me an error telling me that Container.getAll() is not a function

I have tried to export using exports.getAll() but it still throws me an error]

[App.js]

const fs = require("fs");

class Contenedor {
  constructor(txtNameFile) {
    this.txtNameFile = txtNameFile;
    this.products = [];
  }

  async fileInJSON() {
    let fileTxt = await fs.promises.readFile(this.txtNameFile, "utf-8");
    let type = JSON.parse(fileTxt);
    return type;
  }

  async fileSaving(item) {
    let type = JSON.stringify(item);
    await fs.promises.writeFile(this.txtNameFile, type);
  }

  async save(obj) {
    try {
      let fileTxt = await fs.promises.readFile(this.txtNameFile, "utf-8");
      if (fileTxt === "") {
        obj.id = 1;
        this.products.push(obj);
      } else {
        const type = JSON.parse(fileTxt);
        obj.id = type[type.length - 1].id + 1;
        type.push(obj);
        this.products = type;
        this.fileSaving(type);
      }
      console.log(
        "El producto se ha guardado en el archivo satisfactoriamente"
      );
      return obj.id;
    } catch (error) {
      console.error("No se ha podido guardar");
    }
  }

  async getById(id) {
    let type = await this.fileInJSON();
    let product = type.find((product) => product.id == id);
    return console.log(product);
  }

  async getAll() {
    let type = await this.fileInJSON();
    return console.log(type);
  }

  async deleteAll() {
    let item = [];
    this.products = item;
    this.fileSaving(item);
  }

  async deleteById(number) {
    let type = await this.fileInJSON();
    let item = type.find((item) => item.id === number);
    let index = type.indexOf(item);
    type.splice(index, 1);
    this.fileSaving(type);
  }
}

module.exports = Contenedor;

[appServer.js]

const express = require("express");
const app = express();
const PORT = 3000;
const Contenedor = require("./app.js");
 

app.get("/", (req, res) => {
  res.send("Ingresa a la ruta /productos para ver los productos :D");
});

app.get("/productos", (req, res) => {
  res.send(Contenedor.getAll());
});

const servidor = app
  .listen(PORT, () => {
    console.log(`Servidor corriendo en el puerto ${PORT}`);
  })
  .on("error", (error) => console.error("FALLASTE" + error));
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Maybe you should instantiate a Container object by using new operator.

const express = require("express");
const app = express();
const PORT = 3000;
const Contenedor = require("./app.js");
const myContainer = new Contenedor("example.txt");
 

app.get("/", (req, res) => {
  res.send("Ingresa a la ruta /productos para ver los productos :D");
});

app.get("/productos", (req, res) => {
  res.send(myContainer.getAll());
});

const servidor = app
  .listen(PORT, () => {
    console.log(`Servidor corriendo en el puerto ${PORT}`);
  })
  .on("error", (error) => console.error("FALLASTE" + error));
about 4 years ago · Juan Pablo Isaza Denunciar

0

you should access to that class first.

app.get("/productos", (req, res) => {
    const test_class = new Contenedor()
    res.send(test_class.getAll());
});
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda