프로그래밍/NodeJS

spa로 페이지 구성하기

타코코딩 2023. 10. 30. 18:36

url이 바뀌지 않고 json출력을 바꿔가는 방법 연습

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <h1>안녕하세요 ejs파일 테스트</h1>
    <ul style="display: flex; list-style: none">
      <li
        onclick="getItemBy('가전제품')"
        style="border: 1px solid black; margin: 10px">
        가전제품
      </li>
      <li
        onclick="getItemBy('컴퓨터')"
        style="border: 1px solid black; margin: 10px">
        컴퓨터
      </li>
      <li
        onclick="getItemBy('생활용품')"
        style="border: 1px solid black; margin: 10px">
        생활용품
      </li>
    </ul>
    <div id="list"></div>
    <script>
      getItemBy("가전제품");
      function getItemBy(name) {
        const url = "/" + "category" + "/" + name;
        fetch(url)
          .then((res) => res.json())
          .then((result) => {
            const output = `${result
              .map(
                (v) => `
            <h1>${v.category_name}</h1>
            <h1>${v.product_name}</h1>
            <h1>${v.unit_price}</h1>`
              )
              .join("\n")}`;
            document.querySelector("#list").innerHTML = output;
          });
      }
    </script>
  </body>
</html>
import * as categoryRepository from "../repository/categoryRepository.js";

export async function getHome(req, res) {
  res.render("index.ejs");
}

export async function getList(req, res) {
  let { page } = req.params;
  const row = await categoryRepository.getHome(page);
  res.json(row);
}
import { db } from "../db/database.js";

export async function getHome(name) {
  return db
    .execute(
      "SELECT  category_name, product_name , unit_price, sub_category_name  FROM order_detail od INNER JOIN  product p ON od.product_id = p.product_id INNER JOIN sub_category sc ON sc.sub_category_id = p.sub_category_id INNER JOIN category c  ON c.category_id = sc.category_id WHERE  category_name = ?",
      [name]
    )
    .then((result) => result[0]);
}