일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- MongoDB
- lambda
- AWS
- 파이썬
- dict
- TypeScript
- Class
- wetube
- RDS
- NeXT
- merge
- Props
- 튜플
- node
- 채팅
- docker
- async
- EC2
- 카톡
- git
- 중급파이썬
- SAA
- crud
- Vue
- react
- SSA
- socket io
- pandas
- S3
- flask
- Today
- Total
초보 개발자
mongoose mongoDB, Schema, model 만들기 본문
mongoose는 nodejs와 mongoDB를 이어주는 다리역할을 한다.
우리가 자바스크립트로 적으면 mongoose가 mongoDB에게 전해준다.
나 --------> mongoose -------> mongoDB
먼저 터미널을 열고 mongoDB shell과 연결하기 위하여 mongo를 입력해준다.
fail이 뜬다면 sudo service mongodb start를 해준 뒤 비밀번호를 입력해주고 다시 mongo를 입력하면 될 것이다.
이제 우리는 mongoDB와 대화할 수 있다.
위에 보이는 mongodb주소를 mongoose와 이어주기 위해 복사해준다
npm i mongoose
mongoose를 설치, src폴더 내에 자바스크립트 파일을 만들고
아까 복사한 주소를 붙여 넣는다. 그리고 mongoDB에 새로운 database를 만드는 건 아주 간단하다.
주소 뒤에 폴더를 하나 만들어 주면된다 나는 recap폴더를 만들어 주었다.
mongoose는 recap이라는 mongoDB database로 연결해 줄거다.
우리는 이 파일 자체를 import해줄 것이다 파일 자체를 import하면 그 파일이 실행이 된다.
server.js파일에서 import해주자
import "./db"
이렇게만 해주면 server.js가 실행이 될 때 데이터베이스와도 연결이 되는 것이다!!!
연결이 되고 안되고를 콘솔로 확인하면 좋기 때문에 그 기능도 만들어 보자!!!
db는 mongoose의 연결에 관한 것들을 말하고 만약 error가 뜨면 error메시지를 출력하고, 잘 실행이 되면 정상표시를 하게 만들었다.
on을 사용하여 error이벤트가 나올 때 마다 에러콘솔을 나타냈고, once를 사용하여 connection이 열릴 때 한번 정상 콘솔을 실행하도록 하였다. once대신 on을써도 한번만 실행되기는한다. 왜냐면 open이벤트는 어처피 한번만 실행이 되기때문아닐까?
이제부터 우리의 video 모델을 만들어 보겠다.
src/models/Video.js(대문자)
모델을 만들기 전에 모델의 형태(Schema)를 먼저 정의해야한다.
videoSchema = new mongoose.Schema({})를 통해 모델의 형태를 잡아준다.
Video에는 제목, 작성자, 댓글, 시간, 등등등 여러가지 필요한 것이 있을 것이다.
const Video = mongoose.model('Video'(대문자), videoSchema);.
위의 schema를 사용하여 Video모델을 만들고 export해준다.
여기서 주의 해야 할 것이 있다.
우리가 처음 server와 mongodb를 연결하기 위하여 db라는 파일을 맨 처음 실행 시켜주었던 것을 알고 있을 것이다.
그 밑에 바로 실행 시켜 주자.
여기서 실행 시켜주는 이유는 모델을 미리 compile또는 create해야 우리가 필요할 때 해당 model을 사용할 수 있기 때문이라고 한다 다시말해 import "./models/Video.js" 이코드로 model을 compile시켜서 db에서 인식을 시켜줘야 이 이후로 우리가 원할 때 마다 불러 올 수 있게 된다.
단, db를 import한 후에 해야한다!!
그리고 코드를 좀 더 개선해보자면
server.js파일은 express된 것들과 server의 configuration에 관련된 코드만 처리하기 위해 만들어 졌다.
즉 server에 관련된 일만 하기위해 만들어 진 것이다.
database나 models같은 것들을 import하기 위함은 아니다
init.js파일을 따로 만들어서 앱 실행과 database와의 연동을 여기서 해주자
그리고 import app 을 server.js에서 가져오면 아까와 똑같이 작동되지만 좀더 깔끔해 진 것을 확인할 수 있다 그리고 각자 맡은 역할만 한다.
init.js
server.js
server와 관련된 것들을 설정해 놓은 뒤 export하여 init에 보내 app으로 받아 listen으로 실행시켜주면
잘 동작한다.
'RECAP - WETUBE' 카테고리의 다른 글
watch, edit handler (0) | 2021.09.23 |
---|---|
Schema type, 데이터 생성 및 조회 async await (0) | 2021.09.23 |
5 mvp.css (0) | 2021.09.11 |
4-2 템플릿 pug (0) | 2021.09.11 |
4-1 템플릿 pug (0) | 2021.09.11 |