【问题标题】:How to populate the data scraped from API in node js into EJS template如何将从节点js中的API抓取的数据填充到EJS模板中
【发布时间】:2021-10-20 16:33:38
【问题描述】:

我在根目录下的 index.js 文件

const express = require("express");
const app = express();
const path = require("path");
const axios = require("axios").default;
const cors = require("cors");
app.set("view engine", "ejs");
app.set("views", path.join(__dirname, "/views"));

app.use(
  cors({
    origin: "http://localhost:3000",
  })
);

fetchData = async () => {
  const data = await axios.get(
    "https://nepse-data-api.herokuapp.com/data/todaysprice"
  );
  console.log(data);
  return data;
};

app.get("/", (req, res) => {
  const nepseData = fetchData();
  res.render("home.ejs", { nepseData });
});

app.listen(3000, () => {
  console.log("listening to port 3000");
});

views 目录中我的 home.ejs 文件

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <%= nepseData %>
  </body>
</html>

当我运行服务器时浏览器显示这个

API 正在发送此类数据

我想在我的 ejs 文件中显示名称和价格。我现在该怎么办??

【问题讨论】:

    标签: node.js json web-scraping


    【解决方案1】:

    您必须在此处添加await

    app.get("/", async (req, res) => {
      const nepseData = await fetchData();
      res.render("home.ejs", { nepseData });
    });
    
    

    然后你可以遍历数据:

    <% nepseData.forEach(function(row){ %>
    
       <%= row.companyName %> <%= row.minPrice %>
    
    <% }); %>
    

    【讨论】:

    • 没有用。 Await 关键字仅适用于异步函数。
    • 啊,对不起。已编辑。
    • 兄弟,非常感谢。解决了。​​
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2020-09-04
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多