반응형
views/showpost.ejs
댓글 입력하는 곳과 저장된 댓글보여줌.
<!-- 댓글 -->
<br>
<form method="post" action="/process/addcomment">
<label>댓글 </label>
<br>
<input type="text" name="commentText" value="">
<input type="hidden" name="id" value="<%=posts._doc._id%>">
<input type="hidden" name="writer" value=" <%=curWriter %>">
<input type="submit" value="입력완료">
</form>
<br><br> <!-- 댓글 목록--> <label>댓글 목록 </label> <br><br> <% for(var i = 0; i<posts._doc.comments.length; i++){ var curCmts = posts._doc.comments[i].contents; var curCmtWriter = posts._doc.comments[i].writer; %> #<%=(i+1) %> <%=curCmts %> <%= curCmtWriter %> <!-- #1 댓글 내용 작성자 이름 --> <br> <% } %>
config/config.js
/process/addcomment 추가하고
routes/post.js
댓글추가 함수 추가
#findByIdAndUpdate
//댓글 추가
var addComment = function(req,res){
console.log('post.js의 addcomment 호출됨');
var paramId = req.body.id || req.query.id; // 댓글말고 본 글의 아이디
var paramComments = req.body.commentText || req.query.commentText; // 댓글 내용
var paramWriter = req.body.writer || req.query.writer;
console.log('parameter : ' + paramId + ', ' + paramComments + ', ' + paramWriter);
var database = req.app.get('database');
if(database) {
database.postModel.findByIdAndUpdate(paramId, {$push :{comments:{contents:paramComments, writer: paramWriter}}}, function(err){
if(err){
console.log('댓글 추가 중 에러 발생 : ' +err.stack);
res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
res.write('<h2>게시판 댓글 추가 중 에러 발생</h2>');
res.end();
return;
}
console.log('댓글 추가 완료 ');
return res.redirect('/process/showpost/' + paramId);
});
} else {
res.writeHead('200', {
'Content-Type': 'text/html;charset=utf8'
});
res.write('<h2>데이터베이스 연결 실패</h2>');
res.end();
}
}
database/post_schema.js
스키마 및 메소드 수정
},
comments: [{
contents: {
type: String,
trim: true,
default: ''
},
writer: {
type: String,
ref: 'users6'
},
created_at: {
type: Date,
default: Date.now
}
}]
...
//id로 글 찾기
load: function (id, callback) {
this.findOne({
_id: id
})
.populate('writer', 'name provider email')
// .populate('comments.writer')
.exec(callback);
},
반응형
'IT > web' 카테고리의 다른 글
Node.js] Rest Api (0) | 2020.02.21 |
---|---|
Node.js] 네이버 블로그 rss (0) | 2020.02.18 |
Node.js] xml, rss 파싱 (0) | 2020.02.18 |
Node.js] 게시판 만들기4 / 글 수정 기능 (findByIdAndUpdate) (2) | 2020.02.14 |
Node.js] 게시판 만들기3 // 글 삭제 기능 (0) | 2020.02.13 |
댓글