HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🐣
프론트엔드 데브코스 3기 교육생
/
🌌
기동팀
/
🌟
스윗미
/
🎤
사용자 정의 JSON 논의
🎤

사용자 정의 JSON 논의

 
API에 추가적인 데이터가 필요한 경우
대부분의 필드는 String으로 구성 → 사용자 정의 JSON값을 넣어서 처리하는 방법 사용

User (기본 API)

{ "coverImage": String,// 커버 이미지 "image": String,// 프로필 이미지 "role": String, // Regular랑 SuperAdmin이 있는 듯 "emailVerified": Boolean,// 사용되지 않음 "banned": Boolean,// 사용되지 않음 "isOnline": Boolean, // 온라인 여부 "posts": Post[], // 작성한 포스트들 "likes": Like[], // 좋아요 목록 "comments": String[], // 댓글 목록 "followers": [], "following": [ { "_id": "6169e91316cb2265df003c6d", "user": "6169e58216cb2265df003bf4", "follower": "6169e206aa57d952c6dc1edd", "createdAt": "2021-10-15T20:48:19.816Z", "updatedAt": "2021-10-15T20:48:19.816Z", "__v": 0 } ], "notifications": Notification[], "messages": Message[], "_id": String, // ex. 63bd24fd4b0e607612a82bf0 "fullName": String, // 이름 "email": String, "createdAt": String, "updatedAt": String }

Channel (기본 API)

{ "authRequired": Boolean,// 사용되지 않음"posts": String[], "_id": String, "name": String, "description": String, "createdAt": String, "updatedAt": String }

Post (기본 API)

{ "likes": Like[], "comments": Comment[], "_id": String, "image": Optional<String>, "imagePublicId": Optional<String>, "title": String, "channel": Channel, "author": User, "createdAt": String, "updatedAt": String }
 

 
 

사용자 정의 채널

{ "authRequired": Boolean,// 사용되지 않음"posts": String[], "_id": String, "name": String, "description": { "master": User, "headCount": number, "tagList": [], "intro": String, "member": User[], // 우선 master의 User객체는 넣지 않는걸로. }, "createdAt": String, "updatedAt": String }

그룹에 대한 정보 (description custom)

  • 그룹명 name
  • 방장
  • 그룹 제한 인원
  • 태그
  • 그룹 소개
  • 방장
  • 멤버
 
그룹 만들기
→ 그룹 역할을 하는 가계정 (팔로우/언팔로 그룹 소속 여부 판별)
→ 채널도 생성
 
 

사용자 정의 User?

{ "coverImage": String,// 커버 이미지 "image": String,// 프로필 이미지 "role": String, // Regular랑 SuperAdmin이 있는 듯 "emailVerified": Boolean,// 사용되지 않음 "banned": Boolean,// 사용되지 않음 "isOnline": Boolean, // 온라인 여부 "posts": Post[], // 작성한 포스트들 "likes": Like[], // 좋아요 목록 "comments": String[], // 댓글 목록 "followers": [], "following": [ { "_id": "6169e91316cb2265df003c6d", "user": "6169e58216cb2265df003bf4", "follower": "6169e206aa57d952c6dc1edd", "createdAt": "2021-10-15T20:48:19.816Z", "updatedAt": "2021-10-15T20:48:19.816Z", "__v": 0 } ], "notifications": Notification[], "messages": Message[], "_id": String, // ex. 63bd24fd4b0e607612a82bf0 "fullName": String, // 이름 "email": String, "createdAt": String, "updatedAt": String }
만일 뭔가 사용자 정의 데이터를 넣어야 한다면 그건 fullName에 하는 게 가장 이상적일 듯
 

Post

{ "likes": Like[], "comments": Comment[], "_id": String, "image": Optional<String>, "imagePublicId": Optional<String>, "title": { // 여기 "title": "제목", "body": "내용" "tagList": [], };, "channel": Channel, "author": User, "createdAt": String, "updatedAt": String }
제목, 내용, 태그 받아야 함
 
 
 

 
 
  1. “내” 그룹 페이지로 들어옴
GET /channels : 채널 목록
→ 그룹 정보 받고 현재 로그인한 사용자 가 member에 속해 있을 경우 필터해서 보여줌
 
  1. 특정 그룹 클릭시
GET /posts/channels/{channelId} : 특정 채널의 포스트 목록
그 채널의 포스트 목록 뿌리고, 전체 몇 개인지 알려줌
 
  1. i 아이콘 클릭시 그룹 정보 모달 뜸
    1. 그룹명, 태그, 소개는 이미 있는 정보
    2. 그룹의 사용자 정의 속성 member에 있는 데이터로 멤버 리스트 보여줌
        • 프로필, 이름, 오늘의 TIL 작성 여부
          • → 위에서 받은 포스트 정보로 오늘 글 쓴 사람 구분
    3. 그룹 탈퇴하기 클릭시
        • 그룹 정보에서 해당 유저 데이터 제거
          • 채널 관련해서 patch하거나 put하는 api가 없는데.. 어떻게 가능하죠?
         
 
그룹 정보에 관한건 follow
그룹 posts에 관한건 channel
 
  1. 그룹 생성
    1. 그룹을 나타내는 임시 User 생성 후 follower 기능 이용?
      생성 시 User의 email / fullName / password 를 어떤식으로 활용할지
      fullName: JSON.stringify({tagList: [’tag1’, ‘tag2’], introduction: ‘그룹 소개~~~’}, chief: ‘user1’, max);
      • 방장, 최대 인원수, 그룹 소개, 태그 리스트, 그룹명
      password: password(3순위)
      email: 그룹 이름(중복 x)
       
      • channel도 생성
  1. 그룹 탈퇴 / 추방
    1. unfollow 기능 이용?
  1. 그룹 정보 수정
    1. fullName 변경
 
  1. 게시글 작성
    1. 그룹을 나타내는 User의 token으로 게시글 작성?
      → 저는 이렇게 생각을 안하고 그냥 가입 관련한 부분에서만 그 가계정 이용하는 걸로 생각했어요
       
      음 그럼 그룹 생성할 때 channel도 같이 만들어야 하잖아요 그러면 저희 그룹명은 수정이 안되는걸로 해야될 것 같아요
      그렇게 하죠 그럼
       
       
  1. 게시글 삭제/ 수정
    1. API 그대로
 
 
 
  1. 그룹 가입 신청 허락/거절
    1. 일단 무조건 가입되도록 하죠
      (3순위로 미루기)
       
      넵
      일단 그래도 팔로우를 해서 들어온 그룹 내의 멤버만 TIL 본다 이
      컨셉은 유지 가능하니까
      일단 순위는 뒤로 미뤄도 될 것 같습니다
 
  1. 그룹 검색
    1. 태그명 검색을 어케하죠? ㅋㅋㅋ 모든 유저의 fullName이 json 형태인 것만 filter 해서 또 다시 거기서 filter해서 가져오기
      태그명:
      그룹명 검색: 이건 그냥 channel 검색
      그게 나을거같아요 ㅋㅋㅋㅋ
저 백엔드 선배님한테 몽고디비 커스터마이징 post나 put 할수있는지 여쭤보고올게요
와우
넴
 
  • 이건 “id”만 가능
notion image
 
 
  • 수정하고자 하는 값 + “_id”
notion image
  • title → name
 
63c926b2ccf05b284a6905c1