본문 바로가기

JavaScript/Node.js Lecture

11. Node.js Mongodb를 사용한 게시판 (2)

게시판 (1) 에 이어 댓글 달기, 글 검색에 대해 다뤄보겠습니다.

글을 하나 추가해줍니다.

router.get('/search/:keyword', async (req, res) => {
	let result = await Notices.find({ title: { $regex: req.params.keyword } });
	return res.status(200).json({ data: result });
});

 

notice.js에 위 코드를 추가해줍니다.

$regex 쿼리는 정규식에 해당하는 값이 있는 데이터들을 가져옵니다.

저 쿼리는 title 에 keyword가 있는지를 체크하는 것이 됩니다.

검색 결과 있을 시

검색 결과 없을 시

댓글

댓글 달기 기능의 추가를 위해

var NoticeSchema = new mongoose.Schema({
	writer: String, // 쓴 사람의 token
	title: String, // 글 제목
	content: String, // 글 내용
	noticeToken: String, // 글 고유 값
	writeDate: { type: Date, default: new Date() }, // 글 작성 날짜
	comment: [
		{
			username: String, // 댓글 작성자 이름
			content: String, // 댓글 내용
			date: { type: Date, default: new Date() }, // 작성 시간
		},
	], // 댓글
});

스키마에 comment를 추가합니다.

 

// 댓글 달기
router.post('/comment/add', async (req, res) => {
	let user = await Users.findOne({ token: req.body.token }); // 댓글 작성할 유저
	let notice = await Notices.findOne({ noticeToken: req.body.noticeToken });

	notice.comment.push({
		// 가져온 notice 객체 ( find로 찾은 notice는 _id가 존재하며, 스키마의 객체입니다. )
		// 따라서 이러한 문법을 복잡한 update query 없이 사용할 수 있습니다.
		username: user.name,
		content: req.body.content,
	});
	try {
		await notice.save(); // 가져오고 수정한 notice를 다시 save합니다.
		return res.status(200).json({ message: 'success!' });
	} catch (e) {
		return res.status(500).json({ message: 'Save Fail!' });
	}
});

그리고 위의 코드를 notice.js에 추가합니다.

오! 잘 작동하는군요!!!

그럼 게시판 검색 / 댓글 달기에 대한 글을 마치겠습니다. 

 

 

'JavaScript > Node.js Lecture' 카테고리의 다른 글

10. Node.js Mongodb를 사용한 게시판 (1)  (0) 2020.11.19
9. Node.js Multer 이미지 업로드  (0) 2020.11.19
8. Node.js cors  (0) 2020.11.19
7. Node.js Route, export  (0) 2020.11.19
6. Node.js To-Do List  (0) 2020.11.19