2022-04-21(목) TIL

황인호·2022년 6월 7일
0

TIL 모음

목록 보기
29/119
  • 오늘 해야할일

정말 중요한 API 공부하기

왜 이렇게 코드를 작성했는지랑 어떻게 동작하는지 원리를 파악하고 습득하는 시간 필요

오늘 확인할 API

검색 API [완료]

게시글 작성 API

댓글 API [완료]

검색 API 고찰(어떤것을 깊이 생각하고 연구함) 내용

router.get('/search',async(req,res)=> {
	try {
//		찾고자하는 게시글을 쿼리를 통해서 찾겠다
		const {keyword} = req.query
		let posts = await Post.find({postTitle: { $regex:keyword, $options:"i" }.sort({
			postDate:-1,
		})

$regex 는 일치하는 데이터를 찾는 MongoDB 정규표현식이다.

$options :”i”는 대소문자를 구분하지않고 찾겠다는 표현이다

댓글 API 고찰 내용

  • 댓글 작성
router.post('/comments',authMiddleware,async(req,res)=> {
	try {
		//작성한 게시글에 댓글을 작성하는것이므로 게시글을 구분할 목적으로 작성함
		const {postNum} = req.query
		const {contents} = req.body
		const {userId} = res.loacls.user
		const commentDate = new Date()
		// 작성한 댓글마다 구분할수있게끔 commentNum를 만들기위해서 작성하였음
		const maxCommentNum = await Comment.findOne({}).sort("-commentNum")
		let commentNum = maxCommentNum.commentNum + 1
		
		//Post를 업데이트를 해줘야지 게시글에 댓글이 달린건지 아닌지를 알수있음
		await Post.updateOne({postNum})
		//Schemas에서 필수적으로 저장해야하는 데이터들
		await Comment.create({contents,commentDate,postNum,userId,commentNum})
	
		res.status(200).json({result:true,msg:"댓글 작성 성공"})	
	}catch (error) {
		console.log(error)
		//무언가 잘못되었을때 이런 콘솔을 입력하면 바로바로 찾아서 수정이 가능하므로
		//앞으로 API작성할때 콘솔을 찍는 습관을 들여야함
		console.log('comments.js 댓글 작성 -> 여기서 에러발생함)
		res.status(400).json({result:false,msg:"댓글 작성 실패"})
	}
}

댓글 수정

router.put('/comments',authMiddleware,async(req,res)=> {
	try {
		const {commentNum} = req.query
		const {contents} = req.body
		const {userId} = res.locals.user
		
		await Post.updateOne({postNum})
		await Comment.updateOne({content,commentNum,userId})
		res.status(200).json({result:true,msg:"댓글 수정 성공"})
	}catch(error) {
		console.log(error)
		console.log("comments.js 댓글 수정 -> 여기서 에러 발생함")
		res.status(400).json({result:false,msg:"댓글 수정 실패"})
	}
}

댓글 삭제

router.delete('/comments',authMiddleware,async(req,res)=> {
	try {
		const {commentNum} = req.query
		const commentpostNum = await Comment.findOne({commentNum})
				
		await Post.updateOne({postNum:commentpostNum.postNum},{$inc:{postCommentNum:-1}})
		await Comment.deleteOne({commentNum})
		res.status(200).json({result:true,msg:"댓글 삭제 성공"})
	}catch (error) {
		console.log(error)
		console.log('comments.js 댓글 삭제 -> 여기서 에러발생함)
		res.status(400).json({result:false,msg:"댓글 삭제 실패"})
		}
}
profile
성장중인 백엔드 개발자!!

0개의 댓글