본문 바로가기
데이터베이스

mongoose와 express 연결하기(Node.js)

by 즐거운코딩 2023. 8. 5.
반응형

express 프레임워크를 통해 mongoose를 연결해 보겠습니다.

mongoose-express 디렉토리를 만들고 아래와 같이 초기 셋팅을 합니다.

>npm init -y

>npm i express ejs mongoose

express, ejs, mongoose 설치

index.js 에서 express 와 연결하도록 합니다.

const express = require("express");
const app = express();
const path = require("path");

app.set("views", path.join(__dirname, "views"));
app.set("view engine", "ejs");

app.listen(3000, () => {
  console.log("APP IS LISTENING ON PORT 3000!");
});

app.get을 이용하여 간단한 경로를 추가하고, 브라우저에서 정상 표출되는지 확인해봅니다.

const express = require("express");
const app = express();
const path = require("path");

app.set("views", path.join(__dirname, "views"));
app.set("view engine", "ejs");

app.get("/dog", (req, res) => {
  res.send("WOOF!");
});

app.listen(3000, () => {
  console.log("APP IS LISTENING ON PORT 3000!");
});

url dog 경로에 연결 결과 확인

이제 mongoose 로 데이터베이스를 연결합니다.

정상적으로 연결되면 mongo connection open 메시지가 표출됩니다.

const express = require("express");
const app = express();
const path = require("path");

const mongoose = require("mongoose");
mongoose
  .connect("mongodb://127.0.0.1:27017/movieApp", { useNewUrlParser: true })
  .then(() => {
    console.log("mongo connection open !!!");
  })
  .catch((err) => {
    console.log("OH NO mongo connection error !!!");
    console.log(err);
  });
  (...)

[참고] EJS(Embeded Javascript Template) 템플릿 엔진이란?

템플릿을 읽어서 엔진의 문법과 설정에 따라 html 형식으로 변환시키는 모듈입니다.

기본 사용법은 html 에서 <% %> 를 사용하여 서버의 데이터를 사용하거나 코드를 실행시킬 수 있습니다.

특히 html 태그 처럼 자바스크립트 내용을 삽입할 수 있어서 view engine으로 ejs 를 사용합니다.

예시)

express에서 View engine  사용하기

const app = express();
app.set('view engine', 'ejs'); //view engine이 사용할 Template Engine
app.set('views', path.join(__dirname, 'views')); // Template가 있는 디렉토리
<% if (user) { %>
  <h2><%= user.name %></h2>
<% } %>

Tags

  • <% 'Scriptlet' tag, for control-flow, no output
  • <%_ ‘Whitespace Slurping’ Scriptlet tag, strips all whitespace before it
  • <%= Outputs the value into the template (HTML escaped)
  • <%- Outputs the unescaped value into the template
  • <%# Comment tag, no execution, no output
  • <%% Outputs a literal '<%'
  • %> Plain ending tag
  • -%> Trim-mode ('newline slurp') tag, trims following newline
  • _%> ‘Whitespace Slurping’ ending tag, removes all whitespace after it
 

 

반응형