Backend/JavaScript,NodeJS, Express

REST API - 좋아요 기능, 글 목록 구분짓기

jellylucy 2021. 4. 10. 22:42

1. 좋아요 기능 구현하기 

좋아요 상태 판단하기

-코드분석

router.get('/search/:boardIdx/:user_id',async(req,res)=>{
    console.log(req.params);
    console.log(req.params.boardIdx);
    console.log(req.body.title);

    const getBoard = "SELECT * FROM board where boardIdx = ?";
    const getBoardResult = await db.queryParam_Parse(getBoard,req.params.boardIdx);

    const getLikelist = "SELECT * FROM likelist where boardIdx = ? AND user_id = ?";
    const getLikelistResult = await db.queryParam_Parse(getLikelist,[req.params.boardIdx,req.params.user_id]);


     var boardIdx =req.params.boardIdx;
     var user_id =req.params.user_id;
     var title = req.params.title;

    var resResult ={
        status : 0,
        success : 0,
        message :"",
        data : {boardIdx, user_id, title},
        password : ""
    }

    if(!getBoardResult[0]){
        resResult.status = 0;
        resResult.success = 0;
        resResult.message = "해당 게시글 번호 존재하지 않음";
        resResult.data = "";
        res.status(200).send(resResult);
    }
    else{
    if(!getLikelistResult[0]){
        resResult.status = 0;
        resResult.success = 0;
        resResult.message = "좋아요 안 누름";
        resResult.data = "";
        res.status(200).send(resResult);
    }
    else
    {
        resResult.status = 1;
        resResult.success = 0;
        resResult.message = "좋아요 누름";
        resResult.data = "";
        res.status(200).send(resResult);
    }
}});

1. 첫번째 쿼리 : 게시판테이블에서, 원하는 게시글 번호를 가져온다

2. 두번째 쿼리 : 좋아요테이블에서, 게시글 번호와 사용자 id값을 가져온다

3. 첫번째 if/else 문 : 입력한 게시판 번호 유무

4. 두번째 if/else 문 : 게시판과 사용자 id값 유무 

 

좋아요테이블에 게시판 번호와 사용자 id값에 따른 데이터(row)가 있으면, 

좋아요를 누른 상태임으로 판단한다. 

 

좋아요 누르기 

-코드분석 

router.post('/inputlike',async(req,res)=>{
    console.log(req.body.title);
    
    //1. 상세 게시글  boardidx, comment, STATUS 
    const getBoard = "UPDATE board SET like_sum  a where boardIdx, userid VALUES (?,?,?)";

    UPDATE board
    SET like_sum = like_sum + 1
    WHERE boardIdx = 
    
    const getResult = await db.queryParam_Parse(getBoard,[req.body.like_sum]);
  
    //들어온 게시글 번호와 사용자 id값을 가지고 updateㅎㅏ기
    const getBoard = "UPDATE INTO likelist  where boardIdx, userid = ? VALUES";
    const getResult = await db.queryParam_Parse(getBoard,[req.body.boardIdx, req.body.user_id]);

    console.log(getResult);
    if (!getResult) {
        res.status(200).send("DB 오류");
    } else { //쿼리문이 성공했을 때
        res.status(200).send("getResult");
    }

});

1. 사용자의 state를 확인하기 (좋아요를 눌렀는지, 안눌렀는지)

2. state에 따라 좋아요 개수 더하거나 빼기

3. 그 뒤에 state update까지 

 

---

 

상황이 잘 이해가 안간다.

사용자가 좋아요를 누르려고 할 때,

우리는 사용자의 좋아요 상태를 확인해야 하고, 확인후 상태와 좋아요 개수를 업데이트해야한다

 

 

 

2. 최근글, 좋아요 수 글 뿌리기

-코드분석 

router.get('/test/:flag', async (req, res) => {
    
    console.log(req.body);
    var flag = req.params.flag;
    let getBoard;
    let getResult;
    if(flag == 1){
    getBoard = "SELECT * FROM board ORDER BY date";
    getResult = await db.queryParam_None(getBoard);
    }
    else if (flag==2){
    getBoard = "SELECT * FROM board ORDER BY like_sum DESC";
    getResult = await db.queryParam_None(getBoard);

    }


    if (!getResult) {
        res.status(200).send("DB 오류");
    } else { //쿼리문이 성공했을 때

        res.status(200).send(defaultRes.successTrue(statusCode.OK, "필독사항 조회 성공", getResult));
    }
});

1. flag변수를 이용해서 최근글/ 좋아요 수 글 출력을 나눈다

2. 오름차순/ 내림차순을 이용하기 위해 ORDER BY 이용. 

 

'Backend > JavaScript,NodeJS, Express' 카테고리의 다른 글

JWT(json web token) 다뤄보기  (0) 2021.05.02
Web 기초 정리하기  (0) 2021.04.28
Router 실습하기 (Postman, MYSQL)  (0) 2021.04.10
[생활코딩] Database, MYSQL 정리  (0) 2021.03.28
Express 와 MySQL 연동하기  (0) 2021.03.20