본문 바로가기

전체 글

(54)
Node.js로 웹서비스 만들기 22일차 정규식 /abc/ 의 형식으로 // 사이에 작성하는데 /abc/라고 작성하면 abc라는 문자가 들어있냐 라는 뜻이라고 한다. 그런데 여기서 문제는 게시물이 1억개 일때 // 이것들을 다 찾으려면 시간이 오래 걸린다는 것이다 그래서 Binary Search 방식을 사용한다. 예를들어 1~100 중의 한 숫자를 찾을때 1인가요? -> NO 2인가요? -> NO 3인가요? -> NO ...... 이렇게 하나씩 물어보는게 아니라 50이상인가요? -> YES 75이상인가요? -> YES 87이상인가요? -> NO ... 이렇게 범위를 절반씩 쪼개서 찾는 방법이라고 함 바이너리서치를 적용하려면 데이터가 미리 숫자순으로 정렬이 되어 있어야 한다. 몽고디비는 기본적으로 _id 순으로 정렬이 되어있다. 그래서 _id로 ..
Node.js로 웹서비스 만들기 21일차 검색기능 개발하기 서버에 요청해서 DB에 있는 리스트 출력해 달라고 요청을 해야 하니까 POST요청을 하면 됨 collection().findOne() 한개만 찾아주세요 collection().find().toArray() 다 찾아주세요 그런데 이번에는 다른 방식으로 해봄 GET요청으로 할 수 있는 방법 GTE요청으로 URL을 보낼때 쿼리스트링(auery string)을 포함해서 보내면 됨 /list?데이터이름=데이터값 의 형식으로 //list.ejs $('#search').click(function(){ let searchValue= $('#search-input').val(); window.location.replace('/search?value=' + searchValue); }); 인풋에 입력한 ..
Node.js로 웹서비스 만들기 20일차 .env파일로 환경변수(environment variable) 관리하기 DB의 URL이나 포트 번호 등 환경이 바뀌게 되면 수정되야 하는 값들을 .env파일에 넣어놓고 한번에 관리할 수 있는 방법이다. 먼저 라이브러리 설치 npm install dotenv 그 다음 아래의 코드 추가 //server.js require('dotenv').config(); 그 다음 .env파일 생성 (server.js과 같은 경로에 생성한다) 파일명은 없고 .env라고만 만들면 됨 그리고 .env 파일에 환경변수들을 넣어놓음 //.env PORT=너의포트번호 DB_URL="mongodb+srv://너의아이디:너의패스워드@cluster0.wg0xpz1.mongodb.net/너의DB명?retryWrites=true&w=majo..
Node.js로 웹서비스 만들기 19일차 로그인 했을때만 글쓰기 기능 만들기-2 지난번 server.js 에 내용 추가됨 복잡하니 나중에 이대로 복붙하여 사용하면 될듯 //server.js app.get('/login', function(request, response){ response.render('login.ejs'); }); app.post('/login', passport.authenticate('local', { failureRedirect : '/fail' }), function(request, response){ response.redirect('/'); }); //로그인 정보 검증 passport.use(new LocalStrategy({ usernameField: 'id', passwordField: 'pw', session:..
Node.js로 웹서비스 만들기 18일차 로그인 했을때만 글쓰기 가능 만들기 -1 Session 방식 로그인 기능 만들기 npm install passport passport-local express-session 라이브러리 3개를 설치한다. (npm install 다음에 라이브러리 명칭을 띄어쓰기로 나열하면 여러개를 동시에 설치할 수 있다.) server.js에 다음의 코드 추가 //server.js const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const session = require('express-session'); app.use(session({secret : '비밀코드', resave : true, saveU..
Node.js로 웹서비스 만들기 17일차 게시글 수정하기 서버처리 //edit.ejs Todo Due date Submit HTML에서 PUT요청을 할 수 없기 때문에 이를 가능하게 해주는 플러그인 method-override를 설치해 줘야 한다. 서버를 끄고 터미널에 npm install method-override 를 입력한다. 그 다음 server.js에 문구 추가하기 //server.js const methodOverride = require('method-override'); app.use(methodOverride('_method')); 이렇게 하면 이러한 형태로 PUT요청이 가능하다. 그 다음 서버처리 //server.js app.put('/edit', function(request, response){ db.collection('..
Node.js로 웹서비스 만들기 16일차 게시글 수정하는 페이지를 만들어보자 게시글 작성하는 페이지와 상세페이지 기능을 잘 응용하면 간단하게 만들 수 있다. //server.js app.get('/edit/:id', function(request, response){ db.collection('post').findOne({_id : parseInt(request.params.id)}, function(error, result){ response.render('edit.ejs', { data : result }); }); }); 상세페이지와 같이 url에 파라미터를 넘겨서 _id에 따라서 내용을 불러오도록 한다. 파라미터는 list.ejs에서 넘긴다. //list.ejs 할일 마감날짜 : 삭제 수정 수정 이 부분이 파라미터 넘기는 부분 그리고 e..
Node.js로 웹서비스 만들기 15일차 CSS를 불러와서 사용하려고 하는데 안불러와질때 루트에 public 이라는 이름의 폴더를 만들고 그 안에 CSS 파일을 넣은 다음 //server.js app.use('/public', express.static('public')); 한 줄 추가해 주면 됨 정적인 파일을 이런식으로 불러온다고 하는데 관련 내용은 구글검색 해봐야 될 듯 네비바 같은 공통요소들 불러와서 사용하기 nav.html 파일을 views 폴더에 새로 생성한 뒤 내용을 그대로 붙여넣기 한다. 그 다음 .ejs 파일에 다음과 같이 작성하여 불러온다. //list.ejs 또는 detail.ejs 등 //기존에 있던 내용은 삭제함 잘 불러와짐