지영이의 개발 블로그
(4)데이터를 데이터베이스에 저장하기-MongoDB 본문
<MongoDB Atlas 가입/초기셋팅 방법>
1. 구글에 Mongodb atlas 라고 검색해서 홈페이지를 방문합니다 .
2. 가입합니다. 아마 메일인증 필요
▼ 3. 뭐 채우라고 하면 잘 채워봅니다 (나중에 변경가능)
▼ 4. 무료 티어를 선택합니다
▼ 5. 서버위치를 선택합니다. 한국과 물리적으로 가장 가까운 곳을 골라줍니다.
그 밑 내용들은 아마 안건드려도 될듯요 그리고 계속 진행하면 Cluster가 생성됩니다.
▼ 6. Database Access 메뉴에서 DB 접속용 아이디/비번을 생성합니다.
데이터베이스 접속할 수 있는 아이디/비번을 새로 만들어주는겁니다.
왜냐면 하나의 데이터베이스를 여러사람이 사용할 수도 있으니까요.
아주 안전해보이는 admin/qwer1234 이런 아이디 비번은 어떨까요 아무튼 만들고 잘 기억해두십시오.
▼7. Network Access 메뉴에서 IP를 추가합니다.
데이터베이스 접속할 수 있는 IP를 미리 정의해놓는 일종의 보안장치입니다.
스타벅스에서 코딩하실게 분명하니 Allow access from anywhere을 누르시거나 0.0.0.0/0 을 추가합니다.
▼8. Database / collection 만들기를 진행합니다.
Cluster는 하나의 호스팅 공간이고
거기 안에 여러분의 데이터베이스를 만들어야 데이터를 저장할 수 있습니다.
다음시간에 할 것이긴 한데 아무튼 먼저 합시다.
▲ 데이터베이스 이름을 맘대로 설정해주면 됩니다.
저는 이렇게 했는데 이러면 todoapp 이라는 이름의 데이터베이스가 하나 생성됩니다.
이제 이 데이터베이스를 여러분의 컴퓨터에서 접속하려면
강의에서 설명하는 접속 url을 여러분 코드에 복붙해주면 됩니다.
접속 url엔 여러분의 디비 접속용 아이디/비번/데이터베이스 이름이 들어가야합니다.
<Server.js에서 DB접속하기>
1. 터미널 켜서 npm install mongodb 를 입력해서 라이브러리를 설치합니다.
그냥 MongoDB 접속을 쉽게 도와주는 라이브러리입니다.
뭔가 에러가 나고 안된다면 npm uninstall mongodb 로 지웠다가
npm install mongodb@3.6.4 이렇게 설치해서 이용해보도록 합시다.
2. server.js 상단 쯤에 다음 코드를 추가합니다.
const MongoClient = require('mongodb').MongoClient;
3. 하단에 다음 코드를 입력해줍니다
MongoClient.connect('아까 챙겨온 접속URL', function(에러, client){
if (에러) return console.log(에러);
//서버띄우는 코드 여기로 옮기기
app.listen('8080', function(){
console.log('listening on 8080')
});
})
접속 URL은
mongodb+srv://디비계정아이디:디비계정패스워드@cluster0-qaxa3.mongodb.net/데이터베이스이름?retryWrites=true&w=majority 이렇기 생김
그리고 app.listen이라고 그 서버 띄우는 코드를 여기 안으로 옮겨줌
그리고 터미널에서 nodemon server.js로 서버를 실행시켜보면 터미널에 listening on 8080이라고 뜨면 성공
<전체코드>
<Database에 자료 저장하기>
1.database/ collection 만들기
▼MongoDB Atlas 메인 대시보드에서 Collections 라는 버튼을 누르도록 합시다.
▼ 2. Add my own data 버튼을 누르도록 합시다. ( 이미 있다면 create database)
3. database 이름, collection 이름을 하나씩 정해준 다음 저장을 눌러줍니다.
database 이름은 todoapp
collection 이름은 post 라고 지었습니다.
database와 collection의 차이는
이런 거라고 보시면 됩니다. database는 하나의 폴더, collection은 하나의 엑셀파일이라고 생각하면 딱 맞습니다.
<Database와 통신하기>
(둘째줄에 { useUnifiedTopology: true } 는 워닝메세지를 제거해줍니다.)
=>var db;로 페이지 전체에서 쓸 수 있는 전역 변수를 하나 만들고,
그리고 client.db('todoapp') 이라는 함수로 todoapp 이라는 database 에 접속해주세요~라는 명령을 내렸습니다.
<collection에 자료 추가>
=>db.collection('post') 라는건 collection 중에 post 라는걸 선택한다는 뜻이고
뒤에 insertOne을 붙이시면 자료를 추가할 수 있습니다. (Object 자료형식으로 추가가능)
그리고 insertOne 함수는 insertOne(추가할 자료, 콜백함수) 이렇게 쓰시면 되겠습니다
=>mongoDB에선 자료들을 서로 구분하기 위해 _id가 꼭 있어야합니다.
db.collection('post').insertOne()
자주쓰이니 메모멤모
몽고 db에 저장이 됩니당 ㅎ0ㅎ
'Node.js' 카테고리의 다른 글
(6)게시물마다 번호달아보기 (0) | 2022.06.04 |
---|---|
(5)HTML에 DB데이터를 꽂아넣기 (EJS) (0) | 2022.06.04 |
(3)Post요청하기-입력한 데이터를 서버에 전송하는법 (0) | 2022.06.04 |
(2)서버에 GET 요청 하기,부트스트랩,Nodemon (0) | 2022.06.04 |
(1)Node.js와 Express (0) | 2022.06.04 |