错误:连接ECONNREFUSED 127.0.0.1:5000

时间:2020-06-04 18:27:03

标签: node.js express web-scraping axios

我拥有文件 cases.js 来创建所需的路线:

const express = require("express");
const { requireSignin } = require("../controllers/auth");
const { getCases } = require("../controllers/cases");
const { scrapingData } = require("../scrapingData");
const router = express.Router();

router.get("/cases", requireSignin, scrapingData, getCases);

module.exports = router;
来自 controllers / auth

requireSignin如下:

exports.requireSignin = expressJwt({
  secret: process.env.JWT_SECRET,
  userProperty: "auth",
});

scrapingData 作为我具有的中间件:

const updateMongoRecords = async () => {
  mongoose.Promise = global.Promise;
  mongoose.set("debug", true);

  Case.deleteMany({}, (err, result) => {
    if (err) {
      console.log(err);
    } else {
      console.log("Successfully deleted all records");
    }
  });

  const dataPath = Path.join(__dirname, "files", "covid-data.csv");

  try {
    let headers = Object.keys(Case.schema.paths).filter(
      (k) => ["_id", "__v"].indexOf(k) === -1
    );

    await new Promise((resolve, reject) => {
      let buffer = [],
        counter = 0;

      let stream = fs
        .createReadStream(dataPath)
        .pipe(csv())
        .on("error", reject)
        .on("data", async (doc) => {
          stream.pause();
          buffer.push(doc);
          counter++;
          // log(doc);
          try {
            if (counter > 10000) {
              await Case.insertMany(buffer);
              buffer = [];
              counter = 0;
            }
          } catch (e) {
            stream.destroy(e);
          }
          stream.resume();
        })
        .on("end", async () => {
          try {
            if (counter > 0) {
              await Case.insertMany(buffer);
              buffer = [];
              counter = 0;
              resolve();
            } 
          } catch (e) {
            stream.destroy(e);
          }
        });
    });
  } catch (e) {
    console.error(e);
  } finally {
    process.exit();
  }
};

exports.scrapingData = async (req, res, next) => {
   const url = "https://covid.ourworldindata.org/data/owid-covid-data.csv";
   const path = Path.resolve(__dirname, "files", "covid-data.csv");

   const response = await Axios({
     method: "GET",
     url: url,
     responseType: "stream",
    });

   response.data.pipe(fs.createWriteStream(path));

   return new Promise((resolve, reject) => {
   response.data.on("end", () => {
     resolve(updateMongoRecords());
     next();
   });

   response.data.on("error", (err) => {
     reject(err);
   });
  });
 };

controllers / cases 中的getCases.js我有:

const Case = require("../models/case");

exports.getCases = async (req, res) => {
   const cases = await Case.find().then((cases) => res.json(cases));
};

使用此代码,我可以在路由中/ cases中提取客户端的所有案例(例如邮递员),并显示所有案例。但是问题在于,之后我无法再进行其他任何请求(例如注销,如果我不像之前那样对get进行请求,则可以正常工作),因为客户端(邮递员)给出了错误:GET {{3 }} 错误:连接ECONNREFUSED 127.0.0.1:5000

如果您想查看退出代码,例如:

const express = require("express");
const { signup, signin, signout } = require("../controllers/auth");
const router = express.Router();
router.post("/signup", userSignupValidator, signup);
router.post("/signin", userSigninValidator, signin);
router.get("/signout", signout);

controllers / auth.js 内部:

exports.signout = (req, res) => {
  res.clearCookie("t");
  return res.json({ message: "Signout successfully done" });
};

对此有任何帮助吗?

0 个答案:

没有答案