
이전 포스트를 끝으로 약 2개월정도 시간이 흘렀다.
2개월동안은 재취업 준비겸 자격증 공부를 주로 했다.(정처기 실기 1회.. 극악..)
그래도 Node.js를 더 까먹기 전에 빠르게 마무리 하고자 블로그를 구현하는 프로젝트를 시작하고자 한다.
다만, Node.JS와 Express에 대한 지식이 낮은 관계로 인프런의 Do it! Node.js 프로그래밍 입문를 보면서 구현하였고, 그 과정을 블로그에 녹여보고자 한다.
아래와 같은 기능들을 구현하고자 한다.
관리자 계정에 대한 등록 기능은 필요하지 않아 임시로 로직을 작성해서 등록했다.
app.js 파일을 생성한 후 다음과 같은 로직을 작성한다.
아래의 로직은 완성본의 일부분이므로 이후 db 및 layout 설정 등에 따라서 로직이 추가될 예정이다.
require("dotenv").config();
const express = require("express");
const app = express();
const port = process.env.PORT || 3000;
app.use(express.static("public"));
app.listen(port, () => {
console.log(`App listening on port ${port}`);
});
기본적인 MongoDB 연동 방법은 이전 포스트에 적었으므로 링크만 살짝..
먼저 아래와 같이 MongoDB 플러그인에서 커넥션을 대상으로 우클릭을 한 뒤, Copy Connection String을 클릭하면 DB_URI가 복사한다.

.env파일을 생성하고 다음과 같이 설정한다.
(본인의 경우 MONGODB_URI라는 Key로 설정했으나 Key 이름은 마음대로 정해도 상관없다.)
config 폴더에 db.js 파일을 생성하고 다음과 같이 DB 연결 로직을 작성한다.
const mongoose = require("mongoose");
const asyncHandler = require("express-async-handler");
require("dotenv").config();
const connectDb = asyncHandler( async () =>{
const connect = await mongoose.connect(process.env.MONGODB_URI);
console.log(`DB Connected: ${connect.connection.host}`);
})
module.exports = connectDb;
다음과 같이 db관련 로직을 추가 작성한다.
require("dotenv").config();
const express = require("express");
const connectDb = require("./config/db"); // 추가
connectDb(); // 추가
const app = express();
const port = process.env.PORT || 3000;
app.use(express.static("public"));
app.listen(port, () => {
console.log(`App listening on port ${port}`);
});
문제없이 연동된다면 어플리케이션을 실행했을 때 다음과 같은 로그가 출력된다.
관리자(User) 도메인과 게시글(Post) 도메인에 대한 스키마를 models 폴더 내에 다음과 같이 작성한다.
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema({
username: {
type: String,
required: true,
unique: true
},
password: {
type: String,
required: true
}
});
module.exports = mongoose.model("User", userSchema);
const mongoose = require("mongoose");
const PostSchema = new mongoose.Schema({
title: {
type: String,
required: true
},
body: {
type: String,
required: true
},
createdAt: {
type: Date,
default: Date.now()
}
});
module.exports = mongoose.model("Post", PostSchema);