모델UserChannelPostLikeCommentNotification세트 생성세트 삭제세트 목록 불러오기세트 정보 불러오기퀴즈 생성세트의 모든 퀴즈 조회퀴즈 불러오기(풀이)퀴즈 수정퀴즈 삭제댓글 생성댓글 삭제좋아요좋아요 취소나의 알림 목록알림 확인 처리 (GET에서 PUT으로 변경)(댓글, 좋아요에 대한)알림 생성랭킹(유저) 불러오기랭킹(유저) 검색내 정보 변경비밀번호 변경사용자가 쓴 퀴즈 보기회원가입로그인로그아웃인가된 사용자 확인모든 Post 확인
모델
User
{ "_id": String, "role": String, "isOnline": Boolean, "posts": Post[], "likes": Like[], "comments": String[], "notifications": Notification[], "fullName": String, // 커스텀 ( JSON.parse 필요 ) "username": { "id": String //그저 username의 유일성을 위한 값 "points": Number }, "email": String, "createdAt": String, "updatedAt": String }
Channel
{ "_id": String, "name": String, "authRequired": false, // 커스텀 ( JSON.parse 필요 ) "description": { "tag": String[] // 태그[] "des": String // 퀴즈세트 설명 내용 "creator": User, }, "posts": String[], "createdAt": String, "updatedAt": String }
Post
{ "likes": Like[], "comments": Comment[], "_id": String, "image": Optional<String>, "imagePublicId": Optional<String>, // 커스텀 ( JSON.parse 필요 ) "title": { "question": String, "answerDescription": String, // 퀴즈세트 설명 "category": String, // 카테고리 ( 태그에서 변경) "difficulty": Number, "importance": Number, "answerType": String // 문제 유형 설정 (O,X ["t/f"] 객관식 ["numberType"] 단답형 ["stringType"]) "answer": String, // "true", "false" }, "channel": Channel, "author": User, "createdAt": String, "updatedAt": String }
Like
{ "_id": String, //좋아요 자체의 id 주의!! "user": String,// 사용자 id "post": String,// 포스트 id "createdAt": String, "updatedAt": String }
Comment
{ "_id": String, "comment": String, "author": User, "post": String,// 포스트 id "createdAt": String, "updatedAt": String }
Notification
{ "seen": Boolean, "_id": String, "author": User, "user": User | String, "post": Nullable<String>, // 포스트 id "follow": Optional<String>, // 사용자 id "comment": Optional<Comment>, "message": Optional<String>, // 메시지 id "createdAt": String, "updatedAt": String }
세트 생성
[ method ]
POST
[ address ]
/channels/create
[ request header]
Authorization: bearer JWT토큰
[ payload ]
{ "authRequired": false, "description": { "tags": String[] // 태그[] "des": String // 퀴즈세트 설명 내용 "creator": User, }, "name": String }
[ response ]
[ 특이사항 ]
- 관리자 토큰으로만 생성 가능
- 유저 토큰으로 User 객체 요청 후 payload에 추가
[ 예시 ]
{ "authRequired": false, "posts": [], "_id": "62a1a649d298d0396d7e6d6b", "name": "첫번째 세트 웹 프론트엔드 기본 퀴즈 세트", "description": { "tag": ["html", "css", "javascript"], "des": "html, css, javascript 퀴즈로 알아보는 프론트엔드 웹 기본 퀴즈", "creator": { "role": "Regular", "emailVerified": false, "banned": false, "isOnline": true, "posts": [], "likes" : [], "comments": [], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "62a1667cd298d0396d7e6cd7", "fullName": "test01s", "email": "test01@gmail.com", "createdAt": "2022-06-09T03:18:20.372Z", "updatedAt": "2022-06-09T07:33:46.021Z','__v':0" }, "createdAt": "2022-06-09T07:50:33.083Z", "updatedAt": "2022-06-09T07:50:33.083Z", "__v": 0 }
세트 삭제
[ method ]
DELETE
[ address ]
/channels/delete
[ request header]
Authorization: bearer JWT토큰
[ payload ]
{ "id": String // 채널 id }
[ response ]
[ 특이사항 ]
- 관리자 토큰으로만 삭제 가능
[ 예시 ]
{ "authRequired": false, "posts": [], "_id": "62a1a5c3d298d0396d7e6d66", "name": "웹 프론트엔드 기본 퀴즈 세트", "description": "User", "createdAt": "2022-06-09T07:48:19.692Z", "updatedAt": "2022-06-09T07:48:19.692Z", "__v": 0 }
세트 목록 불러오기
[ method ]
GET
[ address ]
/channels
[ response ]
- Channel[]
[ 예시 ]
[ { "authRequired": true, "posts": [ "629f00a4aed9db1ac6b5df9c", "629f0167aed9db1ac6b5dfa3", "629f0182aed9db1ac6b5dfa9", "629f05b9aed9db1ac6b5dfc5", "62a1b992d298d0396d7e6e03" ], "_id": "629effe9aed9db1ac6b5df98", "name": "CheQuiz", "description": "{tag: ['javascript','react'], creator: User, des:'javascript 퀴즈세트입니다'}", //customTag로 실제로는 JSON.stringify()형식으로 날라옴 "createdAt": "2022-06-07T07:36:09.869Z", "updatedAt": "2022-06-09T09:12:50.535Z", "__v": 0 }, { "authRequired": false, "posts": [], "_id": "62a1bef4d298d0396d7e6e44", "name": "첫번째 세트 자바스크립트 고급 퀴즈 세트", "description": "{\"tag\":[\"javascript\"],\"des\":\"자바스크립트 마스터를 위한 고급 퀴즈세트 입니다.\",\"creator\":{\"role\":\"Regular\",\"emailVerified\":false,\"banned\":false,\"isOnline\":false,\"posts\":[],\"likes\":[],\"comments\":[],\"followers\":[],\"following\":[],\"notifications\":[],\"messages\":[],\"_id\":\"62a19c91d298d0396d7e6d36\",\"fullName\":\"자바스크립트러버\",\"email\":\"test@test.com\",\"createdAt\":\"2022-06-09T07:09:05.317Z\",\"updatedAt\":\"2022-06-09T09:18:18.403Z\",\"__v\":0,\"username\":\"{\"totalpoints\" : 150}\"}}", "createdAt": "2022-06-09T09:35:48.629Z", "updatedAt": "2022-06-09T09:35:48.629Z", "__v": 0 } ]
세트 정보 불러오기
[ method ]
GET
[ address ]
/channels/{channelName}
[ response ]
[ 예시 ]
{ "authRequired": true, "posts": [ "629f00a4aed9db1ac6b5df9c", "629f0167aed9db1ac6b5dfa3", "629f0182aed9db1ac6b5dfa9", "629f05b9aed9db1ac6b5dfc5", "62a1b992d298d0396d7e6e03" ], "_id": "629effe9aed9db1ac6b5df98", "name": "CheQuiz", "description": "{tag: ['javascript','react'], creator: User, des:'javascript 퀴즈세트입니다'}", //customTag로 실제로는 JSON.stringify()형식으로 날라옴 "createdAt": "2022-06-07T07:36:09.869Z", "updatedAt": "2022-06-09T09:12:50.535Z", "__v": 0 }
퀴즈 생성
[ method ]
POST
[ address ]
/posts/create
[request header]
Authorization: bearer JWT토큰
[ payload ]
{ "image": null, "channelId": String, "title": { "question": String, "des": String, // 해설 "tag": String, // 태그 "creator": User, "difficulty": Number, "importance": Number, "answerType": String // 문제 유형 설정 (O,X ["t/f"] 객관식 ["numberType"] 단답형 ["stringType"]) "answer": String, // "true" | "false" } }
[ 특이사항 ]
- 세트화 여부도 입력 받지만, 입력 확인 후 바로 channel 에 추가하면 되는 문제라고 생각해서 payload에 넣지 않았습니다.
세트의 모든 퀴즈 조회
[method]
GET
[address]
/posts/channel/{channelId}
[response]
- Post[ ]
[예시]
[ { "likes": [], "comments": [], "_id": "62a1b992d298d0396d7e6e03", "title": "{ \"question\": \"자바스크립트는 인터프리터 언어이다.\", \"des\": \"자바스크립트는 인터프리터 언어입니다.\", \"tag\": [\"Javascript\"], \"creator\": \"user\",\"difficulty\": 1, \"importance\": 3, \"answerType\": [\"t/f\"], \"answer\": \"true\" }", "channel": { "authRequired": true, "posts": [ "629f00a4aed9db1ac6b5df9c", "629f0167aed9db1ac6b5dfa3", "629f0182aed9db1ac6b5dfa9", "629f05b9aed9db1ac6b5dfc5", "62a1b992d298d0396d7e6e03" ], "_id": "629effe9aed9db1ac6b5df98", "name": "CheQuiz", "description": "CheQuiz입니다.", "createdAt": "2022-06-07T07:36:09.869Z", "updatedAt": "2022-06-09T09:12:50.535Z", "__v": 0 }, "author": { "role": "Regular", "emailVerified": false, "banned": false, "isOnline": false, "posts": [], "likes": [], "comments": [], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "62a1667cd298d0396d7e6cd7", "fullName": "{\"totalPoints\":100,\"nickname\":\"outwater\"}", "email": "test01@gmail.com", "createdAt": "2022-06-09T03:18:20.372Z", "updatedAt": "2022-06-09T09:03:18.386Z", "__v": 0, "username": "username 변경" }, "createdAt": "2022-06-09T09:12:50.530Z", "updatedAt": "2022-06-09T09:12:50.530Z", "__v": 0 }, { "likes": [], "comments": [], "_id": "629f05b9aed9db1ac6b5dfc5", "title": "[{\"question\":\"성별은?\",\"point\":10,\"answer\":\"true\",\"set\":\"React카테고리\"},{\"question\":\"성별은?\",\"point\":10,\"answer\":\"true\",\"set\":\"React카테고리\"},{\"question\":\"성별은?\",\"point\":10,\"answer\":\"true\",\"set\":\"React카테고리\"}]", "channel": { "authRequired": true, "posts": [ "629f00a4aed9db1ac6b5df9c", "629f0167aed9db1ac6b5dfa3", "629f0182aed9db1ac6b5dfa9", "629f05b9aed9db1ac6b5dfc5", "62a1b992d298d0396d7e6e03" ], "_id": "629effe9aed9db1ac6b5df98", "name": "CheQuiz", "description": "CheQuiz입니다.", "createdAt": "2022-06-07T07:36:09.869Z", "updatedAt": "2022-06-09T09:12:50.535Z", "__v": 0 }, "author": { "role": "SuperAdmin", "emailVerified": true, "banned": false, "isOnline": false, "posts": [], "likes": [], "comments": [], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "629e29676e3cca1af2766458", "fullName": "Admin", "email": "admin@programmers.co.kr", "createdAt": "2022-06-06T16:20:55.308Z", "updatedAt": "2022-06-09T08:48:18.355Z" }, "createdAt": "2022-06-07T08:00:57.615Z", "updatedAt": "2022-06-07T08:00:57.615Z", "__v": 0 } ]
퀴즈 불러오기(풀이)
[ method ]
GET
[ address ]
/posts/{postId}
[ response]
[ 예시 ]
[ { "likes": [], "comments": [], "_id": "62a1b992d298d0396d7e6e03", "title": { "question": "자바스크립트는 인터프리터 언어이다.", "des": "자바스크립트는 인터프리터 언어입니다.", "tag": [ "Javascript" ], "difficulty": 1, "importance": 3, "answerType": [ "t/f" ], "answer": "true" }, "channel": { "authRequired": true, "posts": [ "629f00a4aed9db1ac6b5df9c", "629f0167aed9db1ac6b5dfa3", "629f0182aed9db1ac6b5dfa9", "629f05b9aed9db1ac6b5dfc5", "62a1b992d298d0396d7e6e03" ], "_id": "629effe9aed9db1ac6b5df98", "name": "CheQuiz", "description": "CheQuiz입니다.", "createdAt": "2022-06-07T07:36:09.869Z", "updatedAt": "2022-06-09T09:12:50.535Z", "__v": 0 }, "author": { "role": "Regular", "emailVerified": false, "banned": false, "isOnline": false, "posts": [], "likes": [], "comments": [], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "62a1667cd298d0396d7e6cd7", "fullName": { "totalPoints": 100, "nickname": "outwater" }, "email": "test01@gmail.com", "createdAt": "2022-06-09T03:18:20.372Z", "updatedAt": "2022-06-09T09:03:18.386Z", "__v": 0, "username": "username 변경" }, "createdAt": "2022-06-09T09:12:50.530Z", "updatedAt": "2022-06-09T09:12:50.530Z", "__v": 0 } ]
퀴즈 수정
[ method ]
PUT
[ address ]
/posts/update
[ request header ]
Authorization: bearer JWT토큰
[ payload ]
{ "postId": String, "title": String, "image": null, "imageToDeletePublicId": Optional<String>, // 빈 문자열 "channelId": String }
[ 특이사항 ]
- 이미지 관련 payload는 null과 빈 문자열
퀴즈 삭제
[ method ]
DELETE
[ address ]
/posts/delete
[ request header ]
Authorization: bearer JWT토큰
[ payload ]
{ "id" : String // quiz id }
댓글 생성
[ method ]
POST
[ address ]
/comments/create
[ request header]
Authorization: bearer JWT토큰
[ payload ]
{ "comment": String, "postId": Strig // quiz id }
[ response ]
댓글 삭제
[ method ]
DELETE
[ address ]
/comments/delete
[ request header]
Authorization: bearer JWT토큰
[ payload ]
{ "id" : String // comment id }
[ response ]
좋아요
[ method ]
POST
[ address ]
/likes/create
[ request header ]
Authorization: bearer JWT토큰
[ payload ]
{ "postId": String }
[ response ]
좋아요 취소
[ method ]
DELETE
[ address ]
/likes/delete
[ Request Header ]
Authorization: bearer JWT토큰
[ payload ]
{ "id" : String // like id }
[ response ]
나의 알림 목록
[ method ]
GET
[ address ]
/notifications
[ request header ]
Authorization: bearer JWT토큰
[ response ]
알림 확인 처리 (GET에서 PUT으로 변경)
[ method ]
PUT
[ address ]
/notifications/seen
[ request header ]
Authorization: bearer JWT토큰
(댓글, 좋아요에 대한)알림 생성
[ method ]
POST
[ address ]
/notifications/create
[ request header ]
Authorization: bearer JWT토큰
[ payload ]
{ "notificationType": "COMMENT" | "LIKE" , "notificationTypeId": String, // comment id | like id "userId": String, "postId": Nullable<String> // quiz id }
[ response ]
[ 특이사항 ]
- quiz(post) 알림 기능 없음
랭킹(유저) 불러오기
[ method ]
GET
[ address ]
/users/get-users
[ payload ]
{ "offset": Optional<Number> "limit": Optional<Number> }
[ response ]
- User[]
랭킹(유저) 검색
[ method ]
GET
[ address ]
/search/users/{query}
[ response ]
- User[]
[특이사항]
- 유저의 post 배열에 값이 들어오지 않습니다. ( 무조건 빈 배열)
- 따라서 해당 경우,
사용자가 쓴 퀴즈 보기
API를 사용해서 접근해주세요.
내 정보 변경
[ method ]
- PUT
[ address ]
/settings/update-user
[ request header ]
Authorization: bearer JWT토큰
[ payload ]
{ "fullName": String "username": { "totalPoints": number, } }
[ Response ]
- User
[ 특이사항 ]
- 포인트 적립할 때 사용합니다.
비밀번호 변경
[ method ]
- PUT
[ address ]
/settings/update-password
[ request header ]
Authorization: bearer JWT토큰
[ payload ]
{ "password": String }
[ response ]
- 없음
[ 특이사항 ]
사용자가 쓴 퀴즈 보기
[ method ]
- GET
[ address ]
/posts/author/:userId
[ payload ]
{ "offset": Optional<Number> "limit": Optional<Number> }
[ response ]
- Post[]
[ 특이사항 ]
- Post 배열에 들어있는 like, comments는 해당 퀴즈에 달려있는 좋아요와 댓글입니다.
회원가입
[ method ]
POST
[ address ]
/signup
[ payload ]
{ "email": String, "fullName": String, "password": String }
[ response ]
{ "user": User, "token": String }
로그인
[ method ]
POST
[ address ]
/login
[ payload ]
{ "email": String, "password": String }
[ response ]
{ "user": User, "token": String }
로그아웃
[ method ]
POST
[ address ]
/logout
인가된 사용자 확인
[ method ]
GET
[ address ]
/auth-user
[ request header ]
Authorization: bearer JWT토큰
[ response ]
모든 Post 확인
[ method ]
GET
[ address ]
/posts
[ response ]
- Post[]
[ 예시 ]
[ { "likes": [], "comments": [], "_id": "62ac3cc2377cfd03a86b54c0", "title": "{\"category\":\"react\",\"question\":\"문제2입니다\",\"difficulty\":\"4\",\"importance\":\"3\",\"answerType\":\"trueOrFalse\",\"answer\":\"true\",\"answerDescription\":\"정답2입니다\"}", "channel": { "authRequired": false, "posts": [ "62aaecbee193b3692eddfa63", "62aaf058e193b3692eddfb08", "62aaf228e193b3692eddfb96", "62ac3c72377cfd03a86b54b8", "62ac3cc2377cfd03a86b54c0" ], "_id": "62aaecbee193b3692eddfa60", "name": "기본채널", "description": "{\"tags\":[],\"des\":\"특정 퀴즈 세트(Channel)에 속하지 않은 모든 퀴즈를 저장하는 기본 채널입니다.\",\"creator\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyOWUyOTY3NmUzY2NhMWFmMjc2NjQ1OCIsImVtYWlsIjoiYWRtaW5AcHJvZ3JhbW1lcnMuY28ua3IifSwiaWF0IjoxNjU1MzY2OTU2fQ.LtWB_mo4Y68BIdmw3m4C8zLKHlOEoRuJWYCX0lJU8wk\"}", "createdAt": "2022-06-16T08:41:34.878Z", "updatedAt": "2022-06-17T08:35:14.035Z", "__v": 0 }, "author": { "role": "Regular", "emailVerified": false, "banned": false, "isOnline": false, "posts": [], "likes": [], "comments": [], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "62aaeb11e193b3692eddfa11", "fullName": "프롱이", "email": "asdf@asdf.com", "createdAt": "2022-06-16T08:34:25.670Z", "updatedAt": "2022-06-17T08:49:54.671Z", "__v": 0 }, "createdAt": "2022-06-17T08:35:14.031Z", "updatedAt": "2022-06-17T08:35:14.031Z", "__v": 0 }, { "likes": [], "comments": [], "_id": "62ac3c72377cfd03a86b54b8", "title": "{\"category\":\"react\",\"question\":\"문제입니다\",\"difficulty\":\"3\",\"importance\":\"2\",\"answerType\":\"trueOrFalse\",\"answer\":\"true\",\"answerDescription\":\"정답입니다\"}", "channel": { "authRequired": false, "posts": [ "62aaecbee193b3692eddfa63", "62aaf058e193b3692eddfb08", "62aaf228e193b3692eddfb96", "62ac3c72377cfd03a86b54b8", "62ac3cc2377cfd03a86b54c0" ], "_id": "62aaecbee193b3692eddfa60", "name": "기본채널", "description": "{\"tags\":[],\"des\":\"특정 퀴즈 세트(Channel)에 속하지 않은 모든 퀴즈를 저장하는 기본 채널입니다.\",\"creator\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyOWUyOTY3NmUzY2NhMWFmMjc2NjQ1OCIsImVtYWlsIjoiYWRtaW5AcHJvZ3JhbW1lcnMuY28ua3IifSwiaWF0IjoxNjU1MzY2OTU2fQ.LtWB_mo4Y68BIdmw3m4C8zLKHlOEoRuJWYCX0lJU8wk\"}", "createdAt": "2022-06-16T08:41:34.878Z", "updatedAt": "2022-06-17T08:35:14.035Z", "__v": 0 }, "author": { "role": "Regular", "emailVerified": false, "banned": false, "isOnline": false, "posts": [], "likes": [], "comments": [], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "62aaeb11e193b3692eddfa11", "fullName": "프롱이", "email": "asdf@asdf.com", "createdAt": "2022-06-16T08:34:25.670Z", "updatedAt": "2022-06-17T08:49:54.671Z", "__v": 0 }, "createdAt": "2022-06-17T08:33:54.021Z", "updatedAt": "2022-06-17T08:33:54.021Z", "__v": 0 }, { "likes": [], "comments": [], "_id": "62aaf228e193b3692eddfb96", "title": "{\"category\":\"javascript\",\"question\":\"자바스크립트 testUser 문제 테스트입니다.\",\"difficulty\":\"1\",\"importance\":\"1\",\"answerType\":\"trueOrFalse\",\"answer\":\"true\",\"answerDescription\":\"자바스크립트 testUser 문제 해설 테스트 입니다.\"}", "channel": { "authRequired": false, "posts": [ "62aaecbee193b3692eddfa63", "62aaf058e193b3692eddfb08", "62aaf228e193b3692eddfb96", "62ac3c72377cfd03a86b54b8", "62ac3cc2377cfd03a86b54c0" ], "_id": "62aaecbee193b3692eddfa60", "name": "기본채널", "description": "{\"tags\":[],\"des\":\"특정 퀴즈 세트(Channel)에 속하지 않은 모든 퀴즈를 저장하는 기본 채널입니다.\",\"creator\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyOWUyOTY3NmUzY2NhMWFmMjc2NjQ1OCIsImVtYWlsIjoiYWRtaW5AcHJvZ3JhbW1lcnMuY28ua3IifSwiaWF0IjoxNjU1MzY2OTU2fQ.LtWB_mo4Y68BIdmw3m4C8zLKHlOEoRuJWYCX0lJU8wk\"}", "createdAt": "2022-06-16T08:41:34.878Z", "updatedAt": "2022-06-17T08:35:14.035Z", "__v": 0 }, "author": { "role": "Regular", "emailVerified": false, "banned": false, "isOnline": false, "posts": [], "likes": [], "comments": [], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "62aae8c0e193b3692eddf9e6", "fullName": "testUser", "email": "testuser@gmail.com", "createdAt": "2022-06-16T08:24:32.380Z", "updatedAt": "2022-06-16T09:17:06.427Z", "__v": 0 }, "createdAt": "2022-06-16T09:04:40.690Z", "updatedAt": "2022-06-16T09:04:40.690Z", "__v": 0 }, { "likes": [ { "_id": "62aaf1dce193b3692eddfb4e", "user": "62aaed65e193b3692eddfa8f", "post": "62aaf058e193b3692eddfb08", "createdAt": "2022-06-16T09:03:24.989Z", "updatedAt": "2022-06-16T09:03:24.989Z", "__v": 0 }, { "_id": "62aaf206e193b3692eddfb7b", "user": "62aaed40e193b3692eddfa7d", "post": "62aaf058e193b3692eddfb08", "createdAt": "2022-06-16T09:04:06.115Z", "updatedAt": "2022-06-16T09:04:06.115Z", "__v": 0 } ], "comments": [ { "_id": "62aaf168e193b3692eddfb26", "comment": "다시 생각해봐도 아쉬워요 ㅠㅠ 틀리다니...", "author": { "role": "Regular", "emailVerified": false, "banned": false, "isOnline": false, "posts": [], "likes": [ "62aaf1dce193b3692eddfb4e" ], "comments": [ "62aaf168e193b3692eddfb26", "62aaf18ee193b3692eddfb31" ], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "62aaed65e193b3692eddfa8f", "fullName": "프롱이3", "email": "qwer@qwer.com", "createdAt": "2022-06-16T08:44:21.085Z", "updatedAt": "2022-06-17T08:29:54.645Z", "__v": 0 }, "post": "62aaf058e193b3692eddfb08", "createdAt": "2022-06-16T09:01:28.960Z", "updatedAt": "2022-06-16T09:01:28.960Z", "__v": 0 }, { "_id": "62aaf18ee193b3692eddfb31", "comment": "다음엔 맞춰볼 예정~", "author": { "role": "Regular", "emailVerified": false, "banned": false, "isOnline": false, "posts": [], "likes": [ "62aaf1dce193b3692eddfb4e" ], "comments": [ "62aaf168e193b3692eddfb26", "62aaf18ee193b3692eddfb31" ], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "62aaed65e193b3692eddfa8f", "fullName": "프롱이3", "email": "qwer@qwer.com", "createdAt": "2022-06-16T08:44:21.085Z", "updatedAt": "2022-06-17T08:29:54.645Z", "__v": 0 }, "post": "62aaf058e193b3692eddfb08", "createdAt": "2022-06-16T09:02:06.083Z", "updatedAt": "2022-06-16T09:02:06.083Z", "__v": 0 } ], "_id": "62aaf058e193b3692eddfb08", "title": "{\"category\":\"javascript\",\"question\":\"자바스크립트 프롱이 문제 테스트입니다.\",\"difficulty\":\"1\",\"importance\":\"1\",\"answerType\":\"trueOrFalse\",\"answer\":\"true\",\"answerDescription\":\"자바스크립트 프롱이 문제 해설 테스트 입니다.\"}", "channel": { "authRequired": false, "posts": [ "62aaecbee193b3692eddfa63", "62aaf058e193b3692eddfb08", "62aaf228e193b3692eddfb96", "62ac3c72377cfd03a86b54b8", "62ac3cc2377cfd03a86b54c0" ], "_id": "62aaecbee193b3692eddfa60", "name": "기본채널", "description": "{\"tags\":[],\"des\":\"특정 퀴즈 세트(Channel)에 속하지 않은 모든 퀴즈를 저장하는 기본 채널입니다.\",\"creator\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyOWUyOTY3NmUzY2NhMWFmMjc2NjQ1OCIsImVtYWlsIjoiYWRtaW5AcHJvZ3JhbW1lcnMuY28ua3IifSwiaWF0IjoxNjU1MzY2OTU2fQ.LtWB_mo4Y68BIdmw3m4C8zLKHlOEoRuJWYCX0lJU8wk\"}", "createdAt": "2022-06-16T08:41:34.878Z", "updatedAt": "2022-06-17T08:35:14.035Z", "__v": 0 }, "author": { "role": "Regular", "emailVerified": false, "banned": false, "isOnline": false, "posts": [], "likes": [], "comments": [], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "62aaeb11e193b3692eddfa11", "fullName": "프롱이", "email": "asdf@asdf.com", "createdAt": "2022-06-16T08:34:25.670Z", "updatedAt": "2022-06-17T08:49:54.671Z", "__v": 0 }, "createdAt": "2022-06-16T08:56:56.343Z", "updatedAt": "2022-06-16T09:04:06.118Z", "__v": 0 }, { "likes": [ { "_id": "62aaf2e8e193b3692eddfbbf", "user": "62aaed40e193b3692eddfa7d", "post": "62aaecbee193b3692eddfa63", "createdAt": "2022-06-16T09:07:52.697Z", "updatedAt": "2022-06-16T09:07:52.697Z", "__v": 0 }, { "_id": "62aaf2eae193b3692eddfbc4", "user": "62aaed40e193b3692eddfa7d", "post": "62aaecbee193b3692eddfa63", "createdAt": "2022-06-16T09:07:54.499Z", "updatedAt": "2022-06-16T09:07:54.499Z", "__v": 0 }, { "_id": "62aaf2ece193b3692eddfbc9", "user": "62aaed40e193b3692eddfa7d", "post": "62aaecbee193b3692eddfa63", "createdAt": "2022-06-16T09:07:56.120Z", "updatedAt": "2022-06-16T09:07:56.120Z", "__v": 0 } ], "comments": [], "_id": "62aaecbee193b3692eddfa63", "title": "{\"category\":\"\",\"question\":\"\",\"difficulty\":0,\"importance\":0,\"answerType\":\"trueOrFalse\",\"answer\":\"\",\"answerDescription\":\"\"}", "channel": { "authRequired": false, "posts": [ "62aaecbee193b3692eddfa63", "62aaf058e193b3692eddfb08", "62aaf228e193b3692eddfb96", "62ac3c72377cfd03a86b54b8", "62ac3cc2377cfd03a86b54c0" ], "_id": "62aaecbee193b3692eddfa60", "name": "기본채널", "description": "{\"tags\":[],\"des\":\"특정 퀴즈 세트(Channel)에 속하지 않은 모든 퀴즈를 저장하는 기본 채널입니다.\",\"creator\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyOWUyOTY3NmUzY2NhMWFmMjc2NjQ1OCIsImVtYWlsIjoiYWRtaW5AcHJvZ3JhbW1lcnMuY28ua3IifSwiaWF0IjoxNjU1MzY2OTU2fQ.LtWB_mo4Y68BIdmw3m4C8zLKHlOEoRuJWYCX0lJU8wk\"}", "createdAt": "2022-06-16T08:41:34.878Z", "updatedAt": "2022-06-17T08:35:14.035Z", "__v": 0 }, "author": { "role": "SuperAdmin", "emailVerified": true, "banned": false, "isOnline": false, "posts": [], "likes": [], "comments": [], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "629e29676e3cca1af2766458", "fullName": "Admin", "email": "admin@programmers.co.kr", "createdAt": "2022-06-06T16:20:55.308Z", "updatedAt": "2022-06-16T09:17:06.427Z" }, "createdAt": "2022-06-16T08:41:34.911Z", "updatedAt": "2022-06-16T09:07:56.121Z", "__v": 0 }, { "likes": [ { "_id": "62ab0116e193b3692eddfd23", "user": "62aafe7ce193b3692eddfc77", "post": "62aaeb93e193b3692eddfa25", "createdAt": "2022-06-16T10:08:22.662Z", "updatedAt": "2022-06-16T10:08:22.662Z", "__v": 0 } ], "comments": [ { "_id": "62aaff3fe193b3692eddfc87", "comment": "오 답이 이렇군요!", "author": { "role": "Regular", "emailVerified": false, "banned": false, "isOnline": false, "posts": [], "likes": [ "62ab0116e193b3692eddfd23" ], "comments": [ "62aaff3fe193b3692eddfc87" ], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "62aafe7ce193b3692eddfc77", "fullName": "미해", "email": "mihae@test.com", "createdAt": "2022-06-16T09:57:16.730Z", "updatedAt": "2022-06-16T17:10:04.729Z", "__v": 0, "username": "{\"id\" : \"62aaed65e193b3692eddfa8f\",\"points\" : 14321}" }, "post": "62aaeb93e193b3692eddfa25", "createdAt": "2022-06-16T10:00:31.824Z", "updatedAt": "2022-06-16T10:00:31.824Z", "__v": 0 } ], "_id": "62aaeb93e193b3692eddfa25", "title": "{\"category\":\"javascript\",\"question\":\"Q2. 아래 코드의 결과 값은 true이다.?\\n\\nconst result = [] === [];\\nconsole.log(result);\",\"difficulty\":\"2\",\"importance\":\"2\",\"answerType\":\"trueOrFalse\",\"answer\":\"false\",\"answerDescription\":\"거짓이다. 배열은 참조타입으로, 새로운 메모리 주소에 할당되기 때문에, 참조값이 달라 같지 않다.\"}", "channel": { "authRequired": false, "posts": [ "62aaeb93e193b3692eddfa25" ], "_id": "62aaeb93e193b3692eddfa1c", "name": "Javascript 문제 풀이 세트", "description": "{\"tags\":[\"Javascript\"],\"des\":\"JavaScript 초보자가 딱 풀기 좋은 풀이 세트입니다.강력 추천합니다\",\"creator\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7Il9pZCI6IjYyYWFlOGMwZTE5M2IzNjkyZWRkZjllNiIsImVtYWlsIjoidGVzdHVzZXJAZ21haWwuY29tIn0sImlhdCI6MTY1NTM2Nzk0Mn0.jmSZLCViQFFI80fPiGVhg3xDAQE9XLg10NytwJLVccQ\"}", "createdAt": "2022-06-16T08:36:35.322Z", "updatedAt": "2022-06-16T09:14:29.939Z", "__v": 0 }, "author": { "role": "Regular", "emailVerified": false, "banned": false, "isOnline": false, "posts": [], "likes": [], "comments": [], "followers": [], "following": [], "notifications": [], "messages": [], "_id": "62aae8c0e193b3692eddf9e6", "fullName": "testUser", "email": "testuser@gmail.com", "createdAt": "2022-06-16T08:24:32.380Z", "updatedAt": "2022-06-16T09:17:06.427Z", "__v": 0 }, "createdAt": "2022-06-16T08:36:35.389Z", "updatedAt": "2022-06-16T10:08:22.664Z", "__v": 0 } ]