Node.js express를 활용해 API 만들기(3)

전준영·2022년 8월 15일
0

express, API

목록 보기
3/3

4. 게시물 수정하기

const modifyPost = (req, res) => {
  const { postingId, postingContent } = req.body.data;

  const post = posts.find((post) => post.id === postingId);
  const userN = users.find((user) => post.userId === user.id);

  const modifiedPost = {
    userId: post.userId,
    userName: userN.name,
    postingId: postingId,
    postingTitle: post.title,
    postingContent: postingContent,
  };

  post.content = modifiedPost.postingContent;

  res.json({ data: modifiedPost });
};

구조분해 할당이란 것을 배우고 나서 직접 사용해보았다.

요청란의 데이터에 postingId와 postingContent라는 것을 상수로 지정하고

post라는 상수안에는 posts테이블을 돌며 post의 id와 요청으로받은 postingId가 같은 값을 객체로 반환

userN이라는 상수 안에는 users테이블을 돌며 post의 userId와 현재 user id 가 같은 객체를 반환한다.

수정된 게시물 안에는 결국 수정된 포스트의 기본 데이터들을 가져오고 수정된 내용은 postingContent로

바꾸어주면 content는 수정되고 나머지 값들은 기존값을 그대로 유지한다.

postman결과

정해둔 메서드 patch와 url : /modify-post로 지정하고

posting id와 수정한다는 content를 요청했을때 기존값들을 가져오면서 content만 수정된 값으로

반환하는 것을 볼 수 있다.

5. 게시물 삭제

const postingDelete = (req, res) => {
  const { id } = req.body.data;

  let newPost = posts.filter((post) => post.id !== id);
  posts = newPost;

  res.status(200).json({ message: "delete complete" });
};

요청받은 데이터중에 id를 상수로 지정하고 변수 newPost 안에는 filter함수를 이용하여

제거하기로한 id와 일치하지 않는 id만 반환받아 넣어주었다.

그리고나서 기존 posts는 newPost로 내용이 바뀌도록 해주었다.

postman결과

지정해둔 delete complete라는 응답을 받았고 그 후에 postlist 기능을 이용해 게시물 조회를 해보면

3번 게시물이 삭제된 채로 조회되는 것을 볼 수 있다.

6. 유저의 게시물 정보 확인

const UserPosting = (req, res) => {
  const { id } = req.body.data;
  const data = {};
  const posting = [];

  data.userId = id;
  data.userName = users.find((user) => user.id == id).name;
  data.postings = posting;

  posts.map((post) => {
    if (post.userId === id) {
      posting.push({
        postingId: post.id,
        postingTitle: post.title,
        postingContent: post.content,
      });
    }
  });
  res.status(200).json({ data });
};

유저 게시물을 확인하고자 할 때 해당 id를 요청받으면 요청받은 id를 상수로 지정해두고

data라는 빈객체를 생성하고 posting이라는 빈 배열을 생성했다.

data안에 들어갈 id는 요청받은 id이며 username은 users테이블에서

find 함수를 이용해 요청받은 id와 같은 이름을 반환해서 담아두었다.

posting 배열 안에 들어갈 데이터들은 아래에 map 함수를 통해서 posts 테이블을 순회하면서 반복하도록

지정해두었고 만약 posts 안의 데이터중에 요청받은 id 와 같은 데이터가 있다면 post라는 매개변수에

담길것이고 posting이라는 빈 배열에 해당 데이터들을 푸쉬하도록 함수를 구성했다.

postman결과

1번 id를 가진 유저가 쓴 게시물들이 내가 의도한 포맷대로 반환되는 모습을 볼 수 있으며

만약 게시물 삭제기능으로 3번 게시물을 삭제 한 후에 조회해본다면

3번 게시물이 없는 1번게시물만 작성한 상태가 되기때문에 이러한 결과를 반환하게 된다.

❗ 느낀점

API 수업을 들으며 많은 시행착오가 있었고 안될 때는 힘들기도 했지만

여러가지 메서드를 학습할 수 있었고 어떤 식으로 함수를 짜야할 지 사고력이 길러지는 의미있는

시간이었다. 더 많이 공부해서 블로그에 더 많은 정보를 정확하게 전달 할 수 있도록 해봐야겠다😎

profile
Just do it!

0개의 댓글