Express.js + Mongoose: 모델 선언하기

난나다·2023년 4월 10일
0

EliceSW4

목록 보기
5/7

엘리스 SW4 트랙을 진행하면서 여러번 Mongoose를 이용해 모델을 선언해보았지만 다시 한 번 정리해보려고 합니다.

스키마 만들기

MongoDB에서는 스키마를 가질 수 없는데 Mongoose를 이용해 스키마를 만들면 데이터를 다루기가 좀 더 쉬워집니다.

일단 mongoose를 불러옵니다.

const mongoose, { Schema } = require('mongoose');
const shortId = require('./types/short-id');

여기서 갑자기 shortId 라는 친구를 불러오는데 이 친구에 대해 알아보겠습니다.

shortId(Mongoose Custom Type)

MongoDB에서 아이디를 사용하려면 ObjectId를 사용해야 하는데 이게 sql처럼 단순한 숫자 방식이 아니라 복잡한 형태로 되어 있어서 사용하기가 불편합니다.

그래서 nanoid 패키지를 사용해 중복없는 문자열을 생성하고 ObjectId를 대신해서 데이터를 선택할 때 사용하는 대표 값으로 사용하는 것입니다.

당연히 npm을 사용하면 npm i nanoid 명령어를 통해 nanoid 패키지를 가져옵니다.

그 뒤에 nanoid를 사용해 shortid 객체를 생성해줍니다.

const { nanoid } = require('nanoid');

const shortId = {
	type: Stiring,
  	default() {
    	return nanoid();
    },
	require: true,
  	index: true,
}

module.exports = shortId;

위와 같이 코드를 작성하고 내보내주면 ObjectId를 대신할 ShortId 완성!


다시 스키마 만들기로 돌아와서

shortId를 가지고 Schema를 만들고 exports 합니다.

exports const PostSchema = new Schema({
	shortId,
  	title: String,
  	content: String,
  	author: String,
}, {
	timestamps: true,  // 작성 시간, 수정 시간을 자동으로 기록해줌
});

모델 만들기

스키마를 만들고 나면 모델 만들기는 그리 어렵지 않습니다.

exports 로 내보낸 postSchema를 불러오고 모델을 만들어 exports 합니다.

const PostSchema = require('./models/schemas/post');

exports.Post = mongoose.model('Post', PostSchema);

간혹 스키마를 만들고 모델을 만드는 과정이 헷갈릴 수 있어 따로 정리해보았습니다.

다음엔 Express.js와 sql을 연동하는 방법도 블로그로 작성해보겠습니다.


출처

이 글은 엘리스 SW 엔지니어 트랙을 기반으로 작성되었습니다.

0개의 댓글