Mern Social Network الجزء الثالت


فهاد الجزء الثالت من Mern Social Network من بعد ما زدنا فالجزء السابق ل controllers ديالنا دبا غادي ندوزوا  les routes لي غادي يمكنونا باش ننفذو كاع les fonctions لي سبق وزدنا فل controllers ديالنا.

نظرة سريعة بالفيديو


1- إضافة ل user routes


دائما ف dossier backend زيد dossier جديد سميه routes فيه غادي نزيدو fichier user.js هنا غادي يكونوا عندي

les routes ديال المستخدم ولي كنسترجع فيه les fonctions لي سبق وزدنا فل controller user وكل route كنعطيه ل fonction لي غادي ينفذ مع ل middleware في حالة تغيير المعلومات الخاصة بالمستخدم أو حذف الحساب نهائيا.

الكود لي غادي تزيد هو :

                                    
                                        const express = require("express");
const {
  createUser,
  getUserById,
  getUser,
  getAllUsers,
  updateUser,
  deleteUser,
  getUserPhoto,
  addFollower,
  addFollowing,
  removeFollowing,
  removeFollower,
} = require("../controllers/user");
const {
  signin,
  requireSignin,
  hasAuthorization,
  signout,
} = require("../controllers/auth");

const router = express.Router();

router.post("/api/users/create", createUser);
router.get("/api/user/:userId", getUser);
router.post("/api/auth/signin", signin);
router.get("/api/auth/signout", signout);
router.get("/api/users", requireSignin, getAllUsers);
router.get("/api/user/photo/:userId", getUserPhoto);
router.put("/api/users/:userId", requireSignin, hasAuthorization, updateUser);
router.delete(
  "/api/users/:userId",
  requireSignin,
  hasAuthorization,
  deleteUser
);
router
  .route("/api/user/add/follow")
  .put(requireSignin, addFollowing, addFollower);
router
  .route("/api/user/remove/follow")
  .put(requireSignin, removeFollowing, removeFollower);

router.param("userId", getUserById);

module.exports = router;
                                    
                                

2- إضافة ل post routes او tweet سميه كيف بغيتي


دائما ف dossier routes فيه غادي نزيدو fichier post.js هنا غادي يكونوا عندي

les routes ديال tweet ولي كنسترجع فيه les fonctions لي سبق وزدنا فل controller post وكل route كنعطيه ل fonction لي غادي ينفذ مع ل middleware في حالة إضافة أو حذف tweet.

الكود لي غادي تزيد هو :

                                    
                                        const express = require("express");
const { requireSignin } = require("../controllers/auth");
const {
  addPost,
  getAllPosts,
  userPosts,
  getPostById,
  isOwner,
  deletePost,
  likePost,
  unlikePost,
  deleteComment,
  addComment,
} = require("../controllers/post");
const { getUserById } = require("../controllers/user");

const router = express.Router();

router.get("/api/posts/:userId", requireSignin, getAllPosts);
router.get("/api/posts/by/:userId", requireSignin, userPosts);
router.delete("/api/post/:postId", requireSignin, isOwner, deletePost);
router.post("/api/post/create/:userId", requireSignin, addPost);
router.put("/api/post/like", requireSignin, likePost);
router.put("/api/post/unlike", requireSignin, unlikePost);
router.put("/api/post/comment", requireSignin, addComment);
router.put("/api/post/uncomment", requireSignin, deleteComment);

router.param("userId", getUserById);
router.param("postId", getPostById);

module.exports = router;
                                    
                                

3- إضافة وفتح السيرفر والربط مع قاعدة البيانات


منبعد ف dossier backend زيد fichier server.js لي فيه غادي نسترجع les routes لي سبق وزدنا وغادي ندير la connexion مع قاعدة البيانات وأيضا غادي نفتح أو ن démarrer السيرفر فل port لي سبق وزدنا ف env.

الكود لي غادي تزيد هو :

                                      
                                        const express = require("express");
const mongoose = require("mongoose");
const cors = require("cors");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const userRoutes = require("./routes/user");
const postRoutes = require("./routes/post");
// const expressJwt = require("express-jwt");

const app = express();

require("dotenv").config();

//middlewares
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use(cookieParser());

//server port
const port = process.env.PORT;

//connect to database
const connectToDatabase = async () => {
  try {
    await mongoose.connect(process.env.DATABASE_URL, {
      useNewUrlParser: true,
      useUnifiedTopology: true,
      useCreateIndex: true,
      useFindAndModify: false,
    });
    console.log("connected to database");
  } catch (error) {
    console.log(error);
  }
};

connectToDatabase();

//use routes
app.use("/", userRoutes);
app.use("/", postRoutes);

//home page
app.get("/", function (req, res) {
  res.send("it's working");
});

//start server
app.listen(port, (err) => {
  if (err) console.log(err);
  console.log(`server started at port ${port}`);
});
                                      
                                    

كلمات مفاتيح :