Step 1
Step 2
Step 3
Create Post
Get All Post
Get Single Post
Update single Post
Delete A Post
মডেল বানাই
const mongoose = require('mongoose');
const PostSchema = new mongoose.Schema({
title: { type: String, required: true },
body: { type: String, required: true },
username: { type: String, required: true },
category: { type: Array, required: true },
photo: { type: String, required: false },
timestamp: { type: Date, default: Date.now },
});
const Post = mongoose.model('Post', PostSchema);
module.exports = Post;
ব্যাখ্যা :
প্রথমে ইম্পোর্ট export করি
const postRoute = require("express").Router();
const verifyToken = require("../middleware/tokenverify");
const Post = require("../models/postmodels");
const User = require("../models/userModels");
// Create a post
postRoute.post('/',verifyToken,async(req,res)=>{
});
// Get All Post
postRoute.get("/",async(req,res)=>{
});
// Get Single Post
postRoute.get("/:id",async(req,res)=>{
});
// Update A Post
postRoute.put("/:id",verifyToken,async(req,res)=>{
});
// Delete A Post
postRoute.delete("/:id",verifyToken,async(req,res)=>{
});
module.exports = postRoute;
const postRoute = require('./routes/postRoute');
app.use("/api/post",postRoute);
postRoute.post('/', verifyToken, async (req, res) => {
try {
const { title, content, category } = req.body;
const userId = req.userId;
let username = "admin"; // Default username in case user is not found
if (userId) {
// If userId is available, try to get the username from the user
const user = await User.findById(userId);
if (user) {
username = user.username;
}
}
const newPost = new Post({ title, content, username, category });
await newPost.save();
res.status(201).json({ message: "Post Created" });
} catch (error) {
console.error(error);
res.status(500).json({ error: "Internal Server Error" });
}
});
// Get All Post
postRoute.get("/", async (req, res) => {
try {
const posts = await Post.find();
res.status(200).json(posts);
} catch (error) {
console.error(error);
res.status(500).json({ error: "Internal Server Error" });
}
});
// Get Single Post
postRoute.get("/:id", async (req, res) => {
try {
const postId = req.params.id;
const post = await Post.findById(postId);
if (!post) {
return res.status(404).json({ error: "Post not found" });
}
res.status(200).json(post);
} catch (error) {
console.error(error);
res.status(500).json({ error: "Internal Server Error" });
}
});
// Update A Post
postRoute.put("/:id", verifyToken, async (req, res) => {
try {
const postId = req.params.id;
const { title, content, category } = req.body;
const updatedPost = await Post.findByIdAndUpdate(
postId,
{ title, content, category },
{ new: true } // Return the updated document
);
if (!updatedPost) {
return res.status(404).json({ error: "Post not found" });
}
res.status(200).json(updatedPost);
} catch (error) {
console.error(error);
res.status(500).json({ error: "Internal Server Error" });
}
});
postRoute.delete("/:id", verifyToken, async (req, res) => {
try {
const postId = req.params.id;
const deletedPost = await Post.findByIdAndDelete(postId);
if (!deletedPost) {
return res.status(404).json({ error: "Post not found" });
}
res.status(200).json({ message: "Post deleted successfully" });
} catch (error) {
console.error(error);
res.status(500).json({ error: "Internal Server Error" });
}
});