npm install mongodb
mysql 포트문제해결
https://0ver-grow.tistory.com/m/194?category=841784
mongoDB 서버
https://cloud.mongodb.com/v2/6374a09b39c3e61fda9563c0#clusters
문법이 비스하고 서버의 데이터를 표현하기 용이하다.
render의 첫번째 전달인자 : 수행경로
render의 두번째 전달인자 : 전달할 데이터 (형식은 객체형식으로 전달)
res.render에서 두 번째 인수 객체에 Pug 변수를 넣음
res.locals 객체에 넣는 것도 가능 (미들웨어 간 공유됨)
=이나 #{}으로 변수 렌더링 가능(=뒤에는 자바스크립트 문법 사용 가능)
Pug의 문법에 적응되지 않는다면 넌적스를 사용하면 좋음
npm install ejs
list.html ⇒ list.ejs 변경
<%= 데이터 %>
<%= 자바스크립트 구문 %>
<h1>서버에서 가져온 할일 리스트</h1>
<% for (let i = 0; i < posts.length; i++) { %>
<h2>할일 제목 : <%= posts[i].todo %></h2>
<h2>날짜 : <%= posts[i].date %></h2>
<% } %>
id = 총 개시물 갯수 + 1 (auto_increment)
Count라는 함수를 사용하면 게시물 개수를 얻어올 수 있지만 좋은 방법은 아니다.
mongoDB Cluster의 counter
Collection을 추가한다.
기존 DB의 총 데이터 개수 정보를 얻어온다.
총 데이터 개수 = result.totalPost;
데이터 추가 할 때 _id 값으로 사용
app.post('/add', (req, res) => {
db.collection('counter').findOne({name: 'postcnt'}, function(err, result) {
if (err) return console.log(err);
console.log(result.totalPost);
var totalCount = result.totalPost
db.collection('post').insertOne({_id: totalCount + 1, todo: req.body.title, date: req.body.date}, function(err, result) {
if(err) return console.log(err);
console.log('저장완료');
});
// counter라는 컬렉션에 있는 totalPost 항목도 1 증가시켜야 함.
db.collection('counter').updateOne({name: 'postcnt'}, { $inc : {totalPost: 1}}, function(err, result) {
if (err) return console.log(err);
})
});
res.send('전송완료');
})
- /add로 post 요청을 하면?
- db.counter에서 totalPost를 찾는다.
- totalPost를 변수에 저장한다.
- DB에 새로운 게시물을 기록한다. (id, todo, date)
- 완료되면 totalPost에 +1 한다.
set(변경) - 세팅
inc(증가) - 증가의 단위
min(기존값보다 적을 때만 변경)
rename(key의 이름 변경
{$set : {totalPost: 바꿀 값}}
{$inc : {totalPost: 기존 값에 더해줄 값}}
삭제 버튼을 클릭하면 서버에 해당 글 삭제 요청을 한다.
삭제 요청은 delete를 사용한다.
get / post
put / delete
서버에 새로고침 없이 /delete 경로로 DELETE 요청을 함.
<script>
$.ajax({
method : 'DELETE',
url : '/delete',
data : '1'
}).done(function(result){
// 요청 성공 시 실행
})
</script>
참고: jquery
프론트엔드 개발을 쉽게 도와주는 자바스크립트 문법