繁体   English   中英

NODEJS,我如何正确地将我的容器 class 的这个方法导出到我管理 express 的另一个 JS 文件?

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

[我试图将我在 app.js 中找到的容器 class 的 getAll() 方法传递到我的 appServer.js 文件,以将其传递到我的 app = express() 变量的 res.send() 并传递该 res。 send() 到路由“/products”

当我尝试运行服务器时,它抛出一个错误告诉我 Container.getAll() 不是 function

我尝试使用 exports.getAll() 导出,但它仍然会抛出一个错误]

[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;

[应用服务器.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));

也许您应该使用 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));

您应该首先访问该 class。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM