MongoDB 연동 방법
1. 몽고 db 라이브러리 설치하기
// 콘솔
npm install mongodb@3.6.4
2. 서버에 연결하기
DB connnect your app 에서 아래 코드 복사 후 server.js 에 아래와 같이 추가
아이디, 비번, 잘 넣어줘야 함
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb+srv://admin:1234@boilerplate.g6vcczn.mongodb.net/?retryWrites=true&w=majority', (error, client)=> {
// 연결되면 할 일
app.listen( 5000, function() {
console.log('접속성공');
});
}
Node.js 에서 MongoDB 사용해보기
1. 원하는 데이터베이스 컬렉션에 값 저장하기
- mongodb 는 noSQL 이기에 collection 이 테이블 같은 개념인듯
- JSON 형식으로 아래와 같이 collection 명 정해주고 insertOne 이용
- 2번의 connect 함수 안에 작성
// 에러나면 할 일
if (error) return console.log('listening on 5000')
// 연결할 데이터베이스명
db = client.db('node_test');
// 저장할 데이터, 콜백함수
db.collection('post').insertOne( {이름 : 'John', 나이 : 20}, (error, res)=> {
console.log('save success')
});
-- id 를 저장해서 보내고 싶으면, JSON 형식 ㅇ안에 _id : 1 이런식으로 보내면 댐
실제로 post 방식등으로 넘어온 데이터를 db 에 원하는 방식으로 저장하고 싶을 때는 아래와 같이 처리하면 됨
app.post('/add', function(req, res) {
res.send('form action complete')
console.log(req.body.title)
db.collection('post').insertOne({date : req.body.date, title : req.body.title}, (error,res) => {
console.log('save complete')
})
})
2. db 에 넣은 데이터 뽑아오기 (ESJ)
- ejs 사용하면 html 파일 확장자를 ejs 로 바꿀 수 있고, HTML 안에 ejs 문법을 이용해 서버 데이터를 넣을 수 있다.
( JSP 랑 비슷함, 넣을 때는 <%= 데이터이름 => )
- ejs 파일을 사용할 떄는 views 폴더 만들고 거기에 넣어야 함
사용법
- 콘솔창에서 EJS 라이브러리 설치
npm install ejs
-맨 위에 ejs 관련 한줄 추가
app.set('view engine', 'ejs');
- 모든 데이터 가져오기
//* list 로 접속하면 실제 db 에 저장된 데이터들로 html 페이지를 보여준다 */
app.get('/list', (req, res) => {
// 모든 data 를 배열 형식으로 뽑아옴
db.collection('post').find().toArray((err, result) => {
console.log(result);
// 요청 오면 여기로 db.collection 안에서 render 넣어야 함
res.render('list.ejs', { posts: result });
});
})
#render is not a function#node#db오류 — FBTM (tistory.com)
-ejs 파일에서 원하는 데이터 값 가져오기
- 위에서 posts 는 배열로 모두 가져왔기에 배열[ ? ] 로써 값을 가져올 수 있음
<h4> 할일 제목 : <%= posts[1].title %></h4>
<p> 할 일 마감날짜 : <%= posts[1].date %> </p>
3. 게시글 번호 붙이기
- _id : 총 게시글 개수 +1
: mongodb 는 auto increment 가 없음 => 새로운 컬렉션을 만들어서 관리
[[ counter 라는 컬렉션을 만들었고, { totalPost: 0, name : '게시글개수'} 데이터를 추가해 놈 ]]
app.post('/add', function (req, res) {
res.send('form action complete')
// console.log(req.body.title)
// 게시글 개수를 셀 새로운 컬렉션에서 가져오기
db.collection('counter').findOne({ name: '게시물개수' }, (err, result) => {
console.log(result.totalPost);
var artilceCount = result.totalPost;
// post collection 에 데이터 insert
db.collection('post').insertOne({ _id: artilceCount + 1, date: req.body.date, title: req.body.title }, (error, result) => {
console.log('save complete')
// 저장 완료 후 totalPost 즉 게시글 id 번호도 1 증가시켜줘야 함
db.collection('counter').updateOne({name : '게시물개수'},{ $inc : {totalPost : 1} }, (err, res)=> {
if (err) return console.log(err);
})
})
});
})
updateOne
(여러개 바꾸고 싶을 떄는 updateMany)
updateOne { {찾을컬럼 : 값}, // where 절이라고 생각하면 편함
{ $set : {바꿀컬럼명 : 바꿀값 }} , function(){} }
// mongodb 문법 , Operator ( {$set : {a : 바꿀값}} {$inc : {a:기존값에 더해줄값}} )
'JavaScript > Node.js' 카테고리의 다른 글
#노드 로그인 #기본 세션 로그인기능 (0) | 2023.02.19 |
---|---|
#페이지조회 #수정 #node form put&delete (0) | 2023.02.13 |
#render 와 sendFile 차이 #nodejs (0) | 2023.02.12 |
#ajax #버튼 #삭제 #fadeOut # node (0) | 2023.02.12 |
Node.js #설치 #npm #get#post#how to show HTML (0) | 2023.02.12 |