[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));
CodePudding user response:
you should access to that class first.
app.get("/productos", (req, res) => {
const test_class = new Contenedor()
res.send(test_class.getAll());
});
CodePudding user response:
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));