[英]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" [我试图将我在 app.js 中找到的容器 class 的 getAll() 方法传递到我的 appServer.js 文件,以将其传递到我的 app = express() 变量的 res.send() 并传递该 res。 send() 到路由“/products”
when I try to run the server it throws me an error telling me that Container.getAll() is not a function当我尝试运行服务器时,它抛出一个错误告诉我 Container.getAll() 不是 function
I have tried to export using exports.getAll() but it still throws me an error]我尝试使用 exports.getAll() 导出,但它仍然会抛出一个错误]
[App.js] [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] [应用服务器.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));
Maybe you should instantiate a Container object by using new operator.也许您应该使用 new 运算符实例化一个 Container object。
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));
you should access to that class first.您应该首先访问该 class。
app.get("/productos", (req, res) => {
const test_class = new Contenedor()
res.send(test_class.getAll());
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.