본문 바로가기
320x100

Projects/NodeBoard16

댓글 답글 기능 구현 어떤 댓글을 DB에서 불러왔을 때 해당 댓글이 댓글인지 답글인지의 2가지 경우가 존재한다. refreshReply함수에서 ROOT_REPLY_ID가 있는지 없는지의 여부에 따라 이를 구분하고, 댓글인 경우 [답글]버튼을 달고, div의 class값으로 해당 댓글의 id를 지정한다. 답글인 경우 margin-left에 20px옵션을 주고 해당 댓글의 아래에 답글을 만든다. function refreshReply(postId){ $.ajax({ url: '/view/refreshReply', datatype: 'json', type: 'POST', data: {id : postId}, success: function(result){ $('#reply-area').empty(); replyList = resu.. 2021. 3. 9.
AJAX로 댓글달기 기능 구현 댓글 기능을 구현해야 하는데, 댓글을 달거나 삭제할 때마다 페이지를 새로고침한다면 자원 낭비일 것이고, 사용자 입장에서도 별로 좋은 느낌은 받지 못한다. 그래서 AJAX를 사용해서 비동기(새로고침을 하지 않는)방식으로 댓글을 구현했다. 먼저 댓글을 위한 REPLY 테이블을 DB에 만들어야 한다. REPLY 테이블의 COLUMN은 다음과 같다. ID : 각각의 댓글에 부여되는 식별값 POST_ID : 해당 댓글이 속한 글의 ID ROOT_REPLY_ID : 답글의 경우 존재하는 타겟 댓글 ID (일반 댓글일 경우 NULL) AUTHOR : 댓글 작성자 CONTENT : 댓글 내용 isLogined : 로그인 사용자의 댓글인지 여부 PASSWORD : 암호화된 댓글 작성 암호 일단 답글은 지금 추가하지 않고.. 2021. 3. 6.
추천하기 기능 구현 추천하기 기능을 구현하되, 같은 ip에서는 한 번만 추천할 수 있도록 구현하고 싶었다. 추천하기 버튼을 누르는 순간 새로고침하지 않고 해당 내용을 반영해야 하기 때문에 AJAX를 사용하였다. 일단 추천한 유저의 IP정보를 가지고 있을 THUMBUPS 테이블을 정의했다. POST_ID에는 해당 글의 ID가 들어가고, USER_IP테이블에는 추천한 유저의 IP가 담긴다. var thumbup = function(id,ip,callback){ // 추천수 카운트 변수 var count; // 해당 글의 추천 수를 새로운 DB에서 카운트 해서 가져오기 db.query('SELECT COUNT(*) AS COUNT FROM THUMBUPS WHERE POST_ID=?',[id],(err,result)=>{ if .. 2021. 3. 3.
글 검색 기능과 페이징 개선 원하는 글을 제목, 글쓴이, 내용으로 검색할 수 있도록 검색기능을 추가하였다. 글쓰기 검색 제목 작성자 내용 일단 list.ejs의 wrap-upper 부분에 검색을 위한 form을 추가하였다. 이 form은 get방식으로 전달되며, 어떤 종류(제목,작성자,내용)의 검색인지, 키워드는 무엇인지, 그리고 해당 페이지가 어떤 게시판을 보여주고 있었는지를 전달한다. var express = require('express'); var router = express.Router(); var db = require('../db-query'); router.get('/',function(req,res,next){ let {type,mode,keyword,page} = req.query; if (page===undef.. 2021. 3. 2.