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

- 수정하고자 하는 값 + “_id”

- title → name
63c926b2ccf05b284a6905c1