게시판 (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 |