Node.js,MongoDB
-
router폴더와파일로 API 관리하기Node.js,MongoDB 2022. 4. 18. 21:50
app.get('/shop/shitrs', function(요청, 응답){ 응답.send('셔츠파는 페이지입니다.') }); app.get('/shop/pants', function(요청, 응답){ 응답.send('바지파는 페이지 입니다.') }); 이렇게, 비슷한 형태의 get요청이 있다면 route폴더에 묶어서 하나로 라우팅을 할 수 있다. 먼저, routes라는 폴더를 만들고, shop.js파일을 만들고 위의 두 get요청을 var router = require('express').Router();//라우터 필수 파일 router.get('/shop/shirts', function(요청, 응답){ 응답.send('셔츠파는 페이지입니다.')//글자를 보여주는 방법 }); router.get('/sho..
-
회원기능(회원만 삭제가능)Node.js,MongoDB 2022. 4. 18. 10:29
지금처럼 만들면 리스트에서 삭제를 누르면 누구나 글 삭제가 가능하다. 이제, 내가 쓴 글만 삭제 가능하게 만들어보자. 여러명의 유저가 있어야 할 것 같아서 회원가입을 먼저 만들어보자 아이디 비밀번호 가입 아이디와 비밀번호를 입력해 /register로 보내주는 form을 만들고 post요청하면 서버에서 db에 저장하면 완성이다. server.js에서 작성할 땐 passport 셋팅부분 아래에 작성해야 한다. app.post('/register',function(요청, 응답){ db.collection('login').insertOne( { id : 요청.body.id, pw : 요청.body.pw } ,function(에러, 결과){ 응답.redirect('/'); }) }) /register로 들어가면 ..
-
검색기능 (URL query string, indexing, Search index)Node.js,MongoDB 2022. 4. 13. 13:42
list.ejs파일에 이렇게 input과 검색버튼을 만들어주고, query string에 대해 알아보자. 검색 먼저, 검색버튼을 누르면 서버에서 post요청을 해야한다. 그리고, 서버는 DB에서 데이터 꺼내줌 collection().findOne() 또는 collection().find().toArray()로 꺼낸다. 근데 post요청 말고, 새로운방법으로 get요청으로 서버로 데이터 전달가능하다. get은 url만 잘 보내면되는데, url에 정보를 담아서 보내면 된다. 이걸 query string라고 부름 query string 작성 방법은 url뒤에 ?데이터이름=데이터값 이렇게 쓰며, 데이터이름으로 데이터값이 서버로 전송된다. //검색버튼 누르면 서버로 GET요청을 한다. +query string으로..
-
.env파일의 환경변수 관리Node.js,MongoDB 2022. 4. 13. 13:39
MongoClient.connect('mongodb+srv://ross1222:dlwnsdud12@ cluster0.ivzfq.mongodb.net/todoapp?retryWrites=true&w=majority', function(에러, client) { if(에러){return console.log(에러)} db = client.db('todoapp'); app.listen(8080, function(){ console.log('listening on 8080') }); }) server.js의 상단에 보면 connect부분에 mongodb+srv라는게 있다. 이런 값은 다른 개발환경이나 다른 컴퓨터로 코드를 옮기면 수정이 필요할 수 있다. 예를 들면, 다른 컴퓨터에선 8070포트를 열거나, DB접속..
-
Session방식 로그인 기능 구현Node.js,MongoDB 2022. 4. 12. 13:49
우선, 3개의 라이브러리가 필요하다. npm install passport passport-local express-session passport, passport-local, express-session을 설치해주고, const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const session = require('express-session'); app.use(session({secret : '비밀코드', resave : true, saveUninitialized : false})); app.use(passport.initialize()); app.use(passport.session..
-
세션, JWT, OAuth등 회원인증 방법론Node.js,MongoDB 2022. 4. 12. 13:09
회원인증 방법엔 3가지가 있다. 1. session-based 어떤 사람이 form에서 로그인을 하면, 서버에서 쿠키(브라우저에 저장할 수 있는 긴 문자열)를 발행한다. 이 쿠키엔 loginUser1인 세션아이디를 저장한다. 즉, 서버 메모리에 loginUser1은 로그인을 했었다는 내용을 쿠키로 주고, 브라우전 이 쿠키를 저장한다. 그리고, 로그인이 필요한 활동을 하면 서버에 자동으로 쿠키를 보내지며 서버에서 쿠키를 찾아서 로그인했던 사람을 찾는다. 장점으론 로그인 상태를 저장하는 것이다. 2. token-based (JWT) 어떤 사람이 form에서 로그인을 하면, 서버에서 웹토큰이라는 JSON Wen Token(긴 문자열)을 발행해준다. 사용자는 브라우저에 저장하고, 로그인이 필요한 활동을 하면 웹..
-
글 수정하기 (edit기능)Node.js,MongoDB 2022. 4. 12. 02:58
수정하기 버튼을 만들어서, 수정하기 버튼을 누르면 원래 있던 글의 제목과 날짜가 뜨며, 수정할 수 있게끔 만들어보자. /edit이라는 url로 만들것이므로 먼저, server.js에 app.get('/edit/:id', function(요청, 응답){ db.collection('post').findOne({ _id : parseInt(요청.params.id) }, function(에러, 결과){ if (결과 == null) { return 응답.render('error.ejs'); } else { console.log(결과); 응답.render('edit.ejs', { data : 결과 }); }; }); }); 이렇게 적어서, 1번글을 수정하려면 /edit/1, 2번글을 수정하려면 /edit/2 이렇게..
-
css 사용Node.js,MongoDB 2022. 4. 8. 16:50
html파일을 꾸밀 때 css를 사용하려면 public폴더를 만들고 그 안에 css파일을 넣어야한다. 그리고 server.js 에 미들 웨어 코드를 추가해야한다. app.use('/public', express.static('public')); 그리고 nav에 링크를 달건데 nav는 파일마다 있으므로 Write 파일마다 href경로를 수정해주기엔 번거롭다. 그래서 nav태그를 조립식으로 첨부할 수 있다. views폴더에 nav.html을 생성해주고 그 안에, nav내용들을 작성해준다. 그리고 .ejs파일들에는 이런 식으로 include를 이용해 적어주면 된다. .ejs에만 가능하므로 html파일들에는 직접 nav내용을 복붙해주면 된다.