IT/javascript

[mongoose] Schema 스키마, Model 이란? 스키마와 모델 작성하기 (유튜브 클론 6.9, 6.10)

공장장J 2022. 9. 20. 03:23
반응형

Schema 스키마

 

Mongoose v6.6.1: Schemas

If you haven't yet done so, please take a minute to read the quickstart to get an idea of how Mongoose works. If you are migrating from 5.x to 6.x please take a moment to read the migration guide. Everything in Mongoose starts with a Schema. Each schema ma

mongoosejs.com

데이터베이스를 매핑하는데 사용되는 정보(문서)의 형식을 정의한다. 몽구스의 모든 것은 스키마로 시작한다.

 

Model

스키마 정의에서 컴파일된 생성자. 모델은 기본 MongoDB 데이터베이스에서 문서를 만들고 읽는다.

 

const 스키마이름 = new mongoose.Schema({ title: "String", views: "Number"});
const 모델이름 = mongoose.model("모델이름", 스키마이름);

 

 

schema 작성하기 전 model이란 폴더를 만들고 그 안에 작성할 파일을 만들었다. 비디오 데이터베이스에 대한 모델을 만들 것이므로 이름은 Video.js다.

 

 

1. video schema 작성하고 model 만들기

 

데이터의 형식을 정의하는 과정이다. 스키마를 정의하고 model을 만든다. 그리고 모델을 export(내보내기)

[Video.js]

import mongoose from "mongoose";

/* 데이터의 형식(schema) 정의 */
const videoSchema = new mongoose.Schema({
  title: String,
  description: String,
  createdAt: Date,
  hashtags: [{ type: String }],
  meta: {
    views: Number,
    rating: Number,
  },
});

/* 그 다음 model을 만든다. model은 ("모델의 이름", 정의한 schema)로 구성한다. */
const Video = mongoose.model("Video", videoSchema);
/* 만든 모델을 default로 내보내기 */
export default Video

실제 데이터는 들어가지 않고 데이터의 형식만 정의한다.

String은 { type: String } 으로 쓸 수도 있다. 같은 의미 다른 표기임.

 

 

2. server.js에서 Video model을 import 해주기.

import "./models/Video"; /* server.js에 databse 연결하기 */

db를 mongoose와 연결시켜 video model을 인식시킨다. 관련 링크는 바로 아래.

2022.09.19 - [IT/개발] - mongoose 몽구스 설치하고 DB연결하기. (유튜브 클론 6.8)

 

mongoose 몽구스 설치하고 DB연결하기. (유튜브 클론 6.8)

mongoose란 javascript 언어로 mongodb를 사용할 수 있도록 javascript를 변환해 주는 라이브러리다. 몽고DB와 Express.js 웹 애플리케이션 프레임워크 간 연결을 생성한다. 결론은 mongodb를 좀더 편하게 사용하

rootingforme.tistory.com

 

 

 

 

2022.09.16 - [IT/개발] - [macOS] MongoDB 설치하기 (유튜브 클론 6.7)

 

[macOS] MongoDB 설치하기 (유튜브 클론 6.7)

MongoDB document - based 문서기반 데이터베이스 일반적인 데이터베이스는 문서기반이 아닌 sql베이스 (엑셀같은 열과 행) 문서기반 데이터베이스는 데이터베이스를 object처럼 생각함. Json-like-document ma

rootingforme.tistory.com

 

 

반응형