Develop/Node.js

[Node.js]서버데이터 화면에 보여주기(GET, EJS 이용)

dawonny 2022. 7. 19. 03:21
728x90
반응형

지금 서버에 들어가 있는 데이터 들을 list.html 을 통해서 

화면에 보여주려고 한다.

(GET 요청)

-> /list 로 GET 요청으로 접속하면 실제 db에 저장된 데이터가 있는 html을 보여주기

 

이때 라이브러리 하나가 필요하다.

npm 으로 설치하고(npm install ejs)

view engine 을 ejs로 set 해주는 코드를 써주고

list.html 과 list.ejs 는 같은 역할이다

근데 list.ejs 는 views 라는 폴더를 만들어 넣어줘야한다.

 


EJS 기본 문법

<h2><%= user.name %></h2>

중간에 서버 데이터 넣을 때에는 저렇게 렌더링하고

<% if (user) { %>
  <h2><%= user.name %></h2>
<% } %>

js 문법을 사용하고 싶을 때에는 <% %> 안에 담으면 된다.


서버에서 가져온 데이터를 콘솔창에 출력해보자

app.get("/list", function (요청, 응답) {
  db.collection("post")
    .find()
    .toArray(function (에러, 결과) {
      console.log(결과);
    });

  응답.render("list.ejs");
});

/list에 방문했을 때 post 라는 collection에 있는 모든 데이터를 찾아서(find) 가져오도록 해봤다.

.find() 랑 .toArray() 는 자주 붙어 쓰니까 알아두기

 

ejs 파일 렌더링 할때에는 render 을 사용해주면 된다.

/list 방문하니까 잘 뜬다

이제 이걸 ejs 파일에 집어넣어보자

app.get("/list", function (요청, 응답) {
  db.collection("post")
    .find()
    .toArray(function (에러, 결과) {
      console.log(결과);
      응답.render("list.ejs", { posts: 결과 });
    });
});

posts 라고 작명을 해줬다

저러면 결과가 posts에 들어가진다.

<h4>할일 제목 : <%= posts[0].title %></h4>
<p>할일 마감날짜 : <%= posts[0].date %></p>

ejs 파일에서 저렇게 데이터 바인딩 해줘서 

화면에 데이터가 잘 뜬다.

 

반복문 적용해서 데이터를 여러개 띄워보자

<% for (var i=0; i < posts.length; i++){ %>
<h4>할일 제목 : <%= posts[i].title %></h4>
<p>할일 마감날짜 : <%= posts[i].date %></p>
<% } %>

EJS 파일에서 js 문법 쓸때에는 저런식으로 쓴다. <% %> 으로 양쪽을 감싸줘야함.

반복문으로 데이터를 잘 가져온다.

728x90
반응형