본문 바로가기

코딩/NodeJS

(23)
nodejs에서 회원 게시판 기능 만들기 1. 개요 내가 쓴 글만 수정, 삭제할 수 있게 변경 2. 코드 (1) 글 작성할때 작성자 정보 저장하는 코드 // POST요청을 처리하는 소스 app.post("/add", function (req, res) { res.send("전송완료"); console.log(req.body.title); console.log(req.body.date); // HTML에서 제목과 날짜 불러와서 변수에 저장 var title = req.body.title; var date = req.body.date; // user의 id를 불러와서 변수에 저장 var user = req.user._id; // counter라는 collection에서 데이터 가져오는 코드 // 게시물갯수 라는 이름의 데이터를 찾아서 가져옴 db...
nodejs랑 mongodb에서 검색 기능 최적화하기(2) 1. 개요 text-index를 만들어두면 검색이 쉬워짐 ‘or’ 연산자나 ‘-’ 연산자 같은거 사용 가능 부분 검색어로 검색 가능 근데 text-index는 단점이 있음 단어 일부만 검색하면 검색이 안됨 mongodb는 띄어쓰기 기준으로 인덱싱 해주기 때문 2. Search Index 쓰기 mongodb atlas에서 search index 만들기 index Name 짓고 인덱스를 적용할 collection을 선택해야 함 [Refine Your Index]를 클릭하고, lucene.korean으로 변경합시다 그 밑에 있는 [Add Field Mapping]버튼을 눌르세여 Field Name은 제목으로 지정해주세여 3. 코드 // 검색 기능 app.get("/search", (요청, 응답) => { //..
nodejs랑 mongodb에서 검색 기능 최적화하기(1) 1. 개요 검색할 데이터가 너무 많으면 검색하기 어려움 indexing이 되어있는 데이터에는 binary search 개념을 도입할 수 있음 binary search는 이진탐색인데 검색할 데이터가 정렬되어있어야 함 indexing은 데이터를 정렬하는 행위 몽고DB에서는 오름차순으로 정렬되어 있는 _id를 이용해서 검색하면 binary search 가능 mongoDB atlas에서 인덱싱 할 수 있음 인덱싱 해둔 데이터를 검색하면 부분 검색어로도 검색 가능 2. MongoDB Atlas에서 인덱싱하기 인덱싱 하고싶은 collection에 접속 후 Indexes탭으로 들어감 [Create Index]버튼을 눌러줌 이렇게 제목을 text 순으로 정렬해준다 3. 코드 (1) server.js // 검색 기능 a..
nodejs랑 mongodb로 검색 기능 만들기 1. 개요 DB에서 게시글 검색하는 기능 구현 // DB에서 한개만 찾음 collection().findOne() // DB에서 몽땅 찾음 collection().find().toArray() DB에서 몽땅 찾을 수 있는 코드 사용 2. 알고리즘 list.ejs에서 검색 버튼 누름 JS 코드를 이용해 query string을 작성하고, 서버에 보내줌 query string은 ‘/search?value=검색어’ 형태임 server.js에서는 ‘/search’라는 URL로 GET 요청 처리 ‘요청.query.value’는 query string으로 전달받은 데이터를 의미 db에서 전달받은 데이터를 collection().find().toArray()로 검색 검색 결과를 ‘searchCon.ejs’파일로 전달..
nodejs에서 회원가입 기능 구현하기 1. 개요 Session-based 로그인을 위한 회원가입 기능 만들기 아이디, 패스워드 제출 시 DB에 해당 내용 전달 2. 코드 (1) server.js // 회원가입 페이지 요청 소스 app.get("/join", function (요청, 응답) { 응답.render("join.ejs"); }); ‘/join’이라는 URL로 요청 들어오면 join.ejs 렌더링 // 회원가입 기능 // POST요청을 처리하는 소스 app.post("/createID", function (req, res) { console.log(req.body.id); console.log(req.body.pw); var id = req.body.id; var pw = req.body.pw; // login이라는 collectio..
nodejs에서 mypage 구현하기 1. 개요 회원가입이랑 로그인 기능 구현했으니까 mypage에 접속할 수 있도록 만들고 싶음 mypage는 회원 정보를 바탕으로 로그인 한 회원의 개인정보가 담긴 페이지를 보여줌 2. 코드 (1) mypage.ejs mypage.ejs파일 만들어줍시다 의 마이페이지입니다 적당히 꾸며주시면 됩니다 (2) server.js // 로그인한 유저의 세션 아이디를 이용해 DB에서 개인정보 찾아주는 코드(개인 정보 페이지 접속시 실행) // db에서 유저 아이디를 이용해서 유저를 찾고, 유저 정보를 done(null, 결과)에전달해줌 // 참고로 '아이디'라는 변수는 serializeUser코드의 'user.id'변수에 들어있는 값과 동일 passport.deserializeUser(function (아이디, do..
nodejs에서 Session-based 회원가입 구현하기 1. 개요 회원가입 기능의 방식에는 크게 3종류가 있음 3가지 방식 모두 장단점이 있으며 우리가 흔히 아는 소셜 로그인 기능은 OAuth방식임 2. 방식 (1) Session-based 브라우저에서 로그인 시 서버에 유저의 로그인 기록 저장 서버에서는 유저의 로그인 기록을 세션 아이디로 만들어서 쿠키 발행 브라우저는 전달받은 쿠키(세션 아이디가 포함되어 있음)를 저장함(로그인을 한 상태) 만약 로그인 해야만 볼 수 있는 페이지(개인정보 페이지 등)를 서버에 요청한다면? 요청과 함께 쿠키가 서버로 전송됨 서버에서는 쿠키에 들어있는 세션 아이디를 서버의 로그인 기록과 대조 함 그 뒤에 서버에서 브라우저로 개인정보 페이지를 보내줌 이 방식은 로그인 상태를 서버에 저장하는 게 특징(서버의 자원을 소모함) (2)..
nodejs+express 서버에 게시글 수정 요청하기 1. 개요 이번엔 게시글 상세 페이지에서 수정 버튼을 누르면 수정 페이지로 넘어가고, 수정 페이지에서 서버로 수정 요청을 해볼거임 서버에 수정 요청을 할때는 PUT 요청을 해야 함 우리는 할 일을 생성할때 form 태그에다가 이렇게 action과 method를 설정해줬음 근데 HTML에서는 POST와 GET요청만 가능하기 때문에 PUT 요청은 HTML에서 바로 할 수 없음 그럼 뭐 어떻게 해야할까? 2. method-override HTML에서도 꼼수로 PUT요청 할 수 있는데 라이브러리를 하나 설치해야 함 npm install method-override 설치 다 했으면 server.js에 아래 코드 추가해야 함 // method-override 사용 설정 const methodOverride = re..