모든 API 는 async await 을 사용해 구분한다.
MongoDB 연결 유틸리티 만들기
API 호출시 데이터를 저장, 조회, 삭제하려면 DB와 연결해야한다.
몽고디비 커넥션을 반환하는 유틸리티 함수를 만들어서 사용
mongodb-connection.js
const {MongoClient} = require('mongodb');
const url = "mongodb+srv://wjdwwidz:<비밀번호>@cluster0.5fd3khr.mongodb.net/board"
module.exports = function(callback){
return MongoClient.connect(url, callback);
}
app.js
...
let collection;
app.listen(3000, async()=>{
console.log("http://localhost:3000 Server Start");
const mongoClient = await mongodbConnection();
collection = mongoClient.db('board').collection("post");
//db()를 통해 데이터베이스 선택, collection("post") 를 사용해 컬렉션을 선택
//기본 db를 board로 설정해두어 인자로 전달하지 않아도 동일한 기능
console.log(`MongoDB Connected`);
});
커스텀 핸들바 생성 및 엔진 반환
핸들바의 장점이자 단점은 자유도가 높다는 것
매우 기본적인 헬퍼 함수 외의 모든 것들은 커스텀 헬퍼 함수로 구현해야 한다.
게시판 프로젝트에서 필요한 커스텀 함수는 다음과 같다.
1. 리스트 길이 구하기
2. 두 값이 같은지 비교
3. ISO데이터 포맷에서 날짜만 뽑아내는 함수
handlebars-helpers.js
module.exports = {
//기본값으로 빈 배열을 주어 null 이 아닌 0을 반환하도록 함
lengthOfList: (list = []) => list.length,
eq:(val1,val2) => val1 === val2,
dateString: (isoString) => new Date(isoString).toLocaleString(),
};
*iso 문자열 : YYYY-MM-DDTHH:mm:ss.sssZ
toLocaleString 로케일의 형식에 맞게 문자열로 변환
module.exports = {
key1: value1,
key2: value2,
// ...
};
* 문법
app.js
app.engine(
"handlebars",
handlebars.create({helpers: require("./configs/handlebars-helpers"),}).engine); //핸들바 생성 및 엔진 반환
handlebars.create() 메서드를 호출하여 handlebars엔진을 생성하고,
다시 app.engine()메서드에 전달하여 express 애플리케이션에 등록
Nodemon 설정
코드 저장시 서버를 자동으로 재시작되는 nodemon 패키지를 설치하고 적용
npm install nodemon
package.json
"scripts": {
"start": "npx nodemon app.js"
},
이후 npm start로 실행 가능
'Web > JavaScript' 카테고리의 다른 글
[Nest.js] Bun 환경에서 Nest.js Init, 구조 모듈화 (1) | 2024.04.17 |
---|---|
[Bun] 초고속 JavaScript 런타임! Bun 에 대해 알아보자 (0) | 2024.04.05 |
[Node.js] express 프로젝트에 핸들바 템플릿 엔진 적용하기 (1) | 2024.03.27 |
[Node.js] npm uninstall 실행 이후 package.json 업데이트 (0) | 2024.03.25 |
[Node.js] npm 의 대안 yarn berry 시작하기 (0) | 2024.03.06 |