From abcd7393287af2ec4342f6cd7cb32c777baed112 Mon Sep 17 00:00:00 2001 From: Mark Klocek Date: Fri, 15 Aug 2025 14:29:12 -0700 Subject: [PATCH 1/8] added comment schema --- models/comments.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 models/comments.js diff --git a/models/comments.js b/models/comments.js new file mode 100644 index 000000000..655561b4d --- /dev/null +++ b/models/comments.js @@ -0,0 +1,25 @@ +import mongoose from 'mongoose' + +const CommentSchema = new mongoose.Schema({ + commentText: { + type: String, + required: true, + }, + userName: { + type: String, + require: true, + }, + userID: { + type: mongoose.Schema.Types.ObjectId, + ref: "User", + }, + postID: { + type: mongoose.Schema.Types.ObjectId + }, + createdAt: { + type: Date, + default: Date.now, + }, +}); + +module.exports = mongoose.model("Post", PostSchema); From c5e43bc2fd144f529da2dc64faeb5a5949171153 Mon Sep 17 00:00:00 2001 From: Mark Klocek Date: Fri, 15 Aug 2025 14:34:51 -0700 Subject: [PATCH 2/8] added input form for post non-user to add comment to post, and added router method in posts for createComment --- routes/posts.js | 2 ++ views/post.ejs | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/routes/posts.js b/routes/posts.js index aa463ac90..169e17e72 100644 --- a/routes/posts.js +++ b/routes/posts.js @@ -11,6 +11,8 @@ router.post("/createPost", upload.single("file"), postsController.createPost); router.put("/likePost/:id", postsController.likePost); +router.post('/addComment/:id', postsController.addComment) + router.delete("/deletePost/:id", postsController.deletePost); module.exports = router; diff --git a/views/post.ejs b/views/post.ejs index c36a1c946..756027046 100644 --- a/views/post.ejs +++ b/views/post.ejs @@ -21,7 +21,16 @@ > - <%}%> + <%}else{%> +
+ + +
+ <%}%>
From 0444a929b09212215f2144a61f6b4adbd4d92f1f Mon Sep 17 00:00:00 2001 From: Mark Klocek Date: Fri, 15 Aug 2025 14:45:01 -0700 Subject: [PATCH 3/8] fixed model export to reflect correct collection name, and added addComment method to post controller export --- controllers/posts.js | 8 ++++++++ models/comments.js | 6 +----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/controllers/posts.js b/controllers/posts.js index a3e2dab5d..0cbfaf786 100644 --- a/controllers/posts.js +++ b/controllers/posts.js @@ -1,5 +1,6 @@ const cloudinary = require("../middleware/cloudinary"); const Post = require("../models/Post"); +import comments from '../models/comments' module.exports = { getProfile: async (req, res) => { @@ -73,4 +74,11 @@ module.exports = { res.redirect("/profile"); } }, + addComment: async(req,res)=>{ + await Comments.create({ + comment: req.body.commentText, + posterID : req.user.id, + postID : req.params.id + }) + } }; diff --git a/models/comments.js b/models/comments.js index 655561b4d..519a378b2 100644 --- a/models/comments.js +++ b/models/comments.js @@ -9,10 +9,6 @@ const CommentSchema = new mongoose.Schema({ type: String, require: true, }, - userID: { - type: mongoose.Schema.Types.ObjectId, - ref: "User", - }, postID: { type: mongoose.Schema.Types.ObjectId }, @@ -22,4 +18,4 @@ const CommentSchema = new mongoose.Schema({ }, }); -module.exports = mongoose.model("Post", PostSchema); +module.exports = mongoose.model("Comments", PostSchema); From 42eaa6901307cee1a4882c5bdce7f80e63adc259 Mon Sep 17 00:00:00 2001 From: Mark Klocek Date: Fri, 15 Aug 2025 14:51:43 -0700 Subject: [PATCH 4/8] modified getPost method in posts controller to pull up the comments for a post before rendering the ejs file --- controllers/posts.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/controllers/posts.js b/controllers/posts.js index 0cbfaf786..7a979ee5b 100644 --- a/controllers/posts.js +++ b/controllers/posts.js @@ -1,6 +1,6 @@ const cloudinary = require("../middleware/cloudinary"); const Post = require("../models/Post"); -import comments from '../models/comments' +import Comments from '../models/comments' module.exports = { getProfile: async (req, res) => { @@ -22,7 +22,11 @@ module.exports = { getPost: async (req, res) => { try { const post = await Post.findById(req.params.id); - res.render("post.ejs", { post: post, user: req.user }); + + const comments = await Comments.findOne({postID : req.params.id}) + + res.render("post.ejs", { post: post, user: req.user, comments:comments || [] }); + } catch (err) { console.log(err); } From 09b6d746787807671019afaacb0d574500b331d1 Mon Sep 17 00:00:00 2001 From: Mark Klocek Date: Fri, 15 Aug 2025 14:58:01 -0700 Subject: [PATCH 5/8] added getPost method in post controller to add a comments array as a parameter, defaulted to an empty array --- controllers/posts.js | 13 ++++++++++--- views/post.ejs | 8 ++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/controllers/posts.js b/controllers/posts.js index 7a979ee5b..0d4c8b5b2 100644 --- a/controllers/posts.js +++ b/controllers/posts.js @@ -26,7 +26,7 @@ module.exports = { const comments = await Comments.findOne({postID : req.params.id}) res.render("post.ejs", { post: post, user: req.user, comments:comments || [] }); - + } catch (err) { console.log(err); } @@ -79,10 +79,17 @@ module.exports = { } }, addComment: async(req,res)=>{ - await Comments.create({ + try{ + await Comments.create({ comment: req.body.commentText, posterID : req.user.id, postID : req.params.id - }) + + }); + console.log('comment added!') + res.redirect(`/post/${req.params.id}`) + }catch(err){ + console.err(err) + } } }; diff --git a/views/post.ejs b/views/post.ejs index 756027046..4dd96b942 100644 --- a/views/post.ejs +++ b/views/post.ejs @@ -31,6 +31,14 @@ <%}%> + + <%if(comments.length > 0){ %> + + + + + <%}%> +
From 034d69cc72138166c71f059bd2972e07cf0b8b32 Mon Sep 17 00:00:00 2001 From: Mark Klocek Date: Fri, 15 Aug 2025 15:00:47 -0700 Subject: [PATCH 6/8] added ejs looping logic to add comments to each post --- views/post.ejs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/views/post.ejs b/views/post.ejs index 4dd96b942..2eebc5430 100644 --- a/views/post.ejs +++ b/views/post.ejs @@ -33,10 +33,15 @@ <%}%> <%if(comments.length > 0){ %> - + <% for (let i = 0; i < comments.length; i++) { %> +
+

<%= comments.userName %>

+ <%= comments.commentText %> +
+ <% } %> + - <%}%>
From d28c79bd4dc93c1db06268308126239e63f84c81 Mon Sep 17 00:00:00 2001 From: Mark Klocek Date: Fri, 15 Aug 2025 15:13:26 -0700 Subject: [PATCH 7/8] fixed some addComment method issues with the keys not having the correct names, and ordered the comments that render in the profile ejs in descending --- controllers/posts.js | 6 +++--- models/comments.js | 2 +- routes/posts.js | 2 +- views/post.ejs | 11 ++++++----- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/controllers/posts.js b/controllers/posts.js index 0d4c8b5b2..2e11f56ca 100644 --- a/controllers/posts.js +++ b/controllers/posts.js @@ -23,7 +23,7 @@ module.exports = { try { const post = await Post.findById(req.params.id); - const comments = await Comments.findOne({postID : req.params.id}) + const comments = await Comments.findAll({postID : req.params.id}).sort({createdAt: 'desc'}) res.render("post.ejs", { post: post, user: req.user, comments:comments || [] }); @@ -81,8 +81,8 @@ module.exports = { addComment: async(req,res)=>{ try{ await Comments.create({ - comment: req.body.commentText, - posterID : req.user.id, + commentText: req.body.commentText, + userName : req.user.id, postID : req.params.id }); diff --git a/models/comments.js b/models/comments.js index 519a378b2..6e5d58259 100644 --- a/models/comments.js +++ b/models/comments.js @@ -18,4 +18,4 @@ const CommentSchema = new mongoose.Schema({ }, }); -module.exports = mongoose.model("Comments", PostSchema); +module.exports = mongoose.model("Comments", CommentSchema); diff --git a/routes/posts.js b/routes/posts.js index 169e17e72..b1c11fe87 100644 --- a/routes/posts.js +++ b/routes/posts.js @@ -11,7 +11,7 @@ router.post("/createPost", upload.single("file"), postsController.createPost); router.put("/likePost/:id", postsController.likePost); -router.post('/addComment/:id', postsController.addComment) +router.post('/addComment/:id', ensureAuth, postsController.addComment) router.delete("/deletePost/:id", postsController.deletePost); diff --git a/views/post.ejs b/views/post.ejs index 2eebc5430..50737072c 100644 --- a/views/post.ejs +++ b/views/post.ejs @@ -33,13 +33,14 @@ <%}%> <%if(comments.length > 0){ %> +
<% for (let i = 0; i < comments.length; i++) { %> -
-

<%= comments.userName %>

- <%= comments.commentText %> -
+
+

<%= comments.userName %>

+ <%= comments.commentText %> +
<% } %> - + <%}%> From 48fa76cc22d08b6ed6dcd7797700b10ae07b8415 Mon Sep 17 00:00:00 2001 From: Mark Klocek Date: Sun, 17 Aug 2025 13:09:46 -0700 Subject: [PATCH 8/8] register redirect now correctly redirects to register instead of login --- controllers/posts.js | 2 +- views/post.ejs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/posts.js b/controllers/posts.js index 2e11f56ca..0c742a533 100644 --- a/controllers/posts.js +++ b/controllers/posts.js @@ -23,7 +23,7 @@ module.exports = { try { const post = await Post.findById(req.params.id); - const comments = await Comments.findAll({postID : req.params.id}).sort({createdAt: 'desc'}) + const comments = await Comments.findAll({postID : req.params.id}).sort({createdAt: 'desc'}).lean() res.render("post.ejs", { post: post, user: req.user, comments:comments || [] }); diff --git a/views/post.ejs b/views/post.ejs index 50737072c..950acb2eb 100644 --- a/views/post.ejs +++ b/views/post.ejs @@ -27,7 +27,7 @@ method="POST" class="col-3" > - + <%}%>