برنامه نویسی

کد آموزشی Nodejs-Docker YT به روز شد

Summarize this content to 400 words in Persian Lang

کد کاربرد خام

index.js کد فایل

const express = require(“express”);
const mongoose = require(‘mongoose’);

const {
MONGO_USER,
MONGO_PASSWORD,
MONGO_IP,
MONGO_PORT,
} = require(“./Config/config”);

const postRouter = require(“./routes/postRoutes”);

const app = express();

// Add middleware to parse JSON bodies
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// Construct MongoDB URL with error handling
const mongoURL = `mongodb://${MONGO_USER || ‘root’}:${MONGO_PASSWORD || ‘example’}@${MONGO_IP || ‘localhost’}:${MONGO_PORT || 27017}/?authSource=admin`;

const connectWithRetry = () => {
mongoose
.connect(mongoURL)
.then(() => console.log(“Successfully connected to Database”))
.catch((e) => {
console.log(“Error connecting to DB:”, e);
setTimeout(connectWithRetry, 5000); // Retry after 5 seconds
});
};

connectWithRetry();

app.get(“/”, (req, res) => {
res.send(“<h1>Hello World</h1>”);
});

app.use(“/api/v1/posts”, postRouter);

const port = process.env.PORT || 3000;

app.listen(port, () => console.log(`Listening on port ${port}`));

postController.js کد فایل

const Post = require(“../models/postModel”);

// Get all posts
exports.getAllPosts = async (req, res, next) => {
try {
const posts = await Post.find();

res.status(200).json({
status: “success”,
results: posts.length,
data: {
posts,
},
});
} catch (error) {
console.error(error);
res.status(500).json({
status: “fail”,
message: “Server Error”,
});
}
};

// Get a single post by ID
exports.getOnePost = async (req, res, next) => {
try {
const post = await Post.findById(req.params.id);

if (!post) {
return res.status(404).json({
status: “fail”,
message: “Post not found”,
});
}

res.status(200).json({
status: “success”,
data: {
post,
},
});
} catch (error) {
console.error(error);
if (error.name === ‘CastError’) {
return res.status(400).json({
status: “fail”,
message: “Invalid post ID format”,
});
}
res.status(500).json({
status: “fail”,
message: “Server Error”,
});
}
};

// Create a new post
exports.createPost = async (req, res, next) => {
try {
// Check if required fields are present
if (!req.body.title || !req.body.body) {
return res.status(400).json({
status: “fail”,
message: “Missing required fields: title and body are required”,
});
}

const post = await Post.create(req.body);

res.status(201).json({
status: “success”,
data: {
post,
},
});
} catch (error) {
console.error(error);
if (error.name === ‘ValidationError’) {
return res.status(400).json({
status: “fail”,
message: “Validation Error”,
errors: Object.values(error.errors).map(err => ({
field: err.path,
message: err.message
}))
});
}
res.status(500).json({
status: “fail”,
message: “Server Error”,
});
}
};

// Update an existing post by ID
exports.updatePost = async (req, res, next) => {
try {
const updatedPost = await Post.findByIdAndUpdate(
req.params.id,
req.body,
{ new: true, runValidators: true }
);

if (!updatedPost) {
return res.status(404).json({
status: “fail”,
message: “Post not found”,
});
}

res.status(200).json({
status: “success”,
data: {
post: updatedPost,
},
});
} catch (error) {
console.error(error);
if (error.name === ‘ValidationError’) {
return res.status(400).json({
status: “fail”,
message: “Validation Error”,
errors: Object.values(error.errors).map(err => ({
field: err.path,
message: err.message
}))
});
}
if (error.name === ‘CastError’) {
return res.status(400).json({
status: “fail”,
message: “Invalid post ID format”,
});
}
res.status(500).json({
status: “fail”,
message: “Server Error”,
});
}
};

// Delete a post by ID
exports.deletePost = async (req, res, next) => {
try {
const post = await Post.findByIdAndDelete(req.params.id);

if (!post) {
return res.status(404).json({
status: “fail”,
message: “Post not found”,
});
}

res.status(204).json({
status: “success”,
data: null,
});
} catch (error) {
console.error(error);
if (error.name === ‘CastError’) {
return res.status(400).json({
status: “fail”,
message: “Invalid post ID format”,
});
}
res.status(500).json({
status: “fail”,
message: “Server Error”,
});
}
};

postModel.js کد فایل

const mongoose = require(“mongoose”);

const postSchema = new mongoose.Schema({
title: {
type: String,
required: [true, “Post must have title”], // Changed from ‘require’ to ‘required’
},
body: {
type: String,
required: [true, “post must have body”],
},
});

const Post = mongoose.model(“Post”, postSchema);
module.exports = Post;

postRoutes.js کد فایل

const express = require(“express”);
const postController = require(“../controllers/postController”);

const router = express.Router();

router
.route(“/”)
.get(postController.getAllPosts)
.post(postController.createPost);

router
.route(“/:id”)
.get(postController.getOnePost)
.patch(postController.updatePost)
.delete(postController.deletePost);

module.exports = router;

پستچی را نصب کنید می توانید ویدیوی زیر را نیز تماشا کنید..
https://youtu.be/Hmn5XeZv-GE?si=WCYtlVSuIclqzEkT

در پستچی:
دوباره درخواست POST را با این قالب در Postman ارسال کنید:

آدرس اینترنتی: http://localhost:3000/api/v1/posts
روش: POST
هدرها: نوع محتوا: application/json
بدن:

برگه “بدن” را انتخاب کنید
“raw” را انتخاب کرده و از منوی بازشو “JSON” را انتخاب کنید
داده ها را در این فرمت وارد کنید:

{
“title”: “Your Post Title”,
“body”: “Your Post Content”
}

اکنون می توانید به راحتی و بدون مواجهه با هیچ خطایی به آموزش ادامه دهید.

کد کاربرد خام

index.js کد فایل

const express = require("express");
const mongoose = require('mongoose');

const {
  MONGO_USER,
  MONGO_PASSWORD,
  MONGO_IP,
  MONGO_PORT,
} = require("./Config/config");

const postRouter = require("./routes/postRoutes");

const app = express();

// Add middleware to parse JSON bodies
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// Construct MongoDB URL with error handling
const mongoURL = `mongodb://${MONGO_USER || 'root'}:${MONGO_PASSWORD || 'example'}@${MONGO_IP || 'localhost'}:${MONGO_PORT || 27017}/?authSource=admin`;

const connectWithRetry = () => {
  mongoose
    .connect(mongoURL)
    .then(() => console.log("Successfully connected to Database"))
    .catch((e) => {
      console.log("Error connecting to DB:", e);
      setTimeout(connectWithRetry, 5000);  // Retry after 5 seconds
    });
};

connectWithRetry();

app.get("/", (req, res) => {
  res.send("<h1>Hello World</h1>");
});

app.use("/api/v1/posts", postRouter);

const port = process.env.PORT || 3000;

app.listen(port, () => console.log(`Listening on port ${port}`));

postController.js کد فایل

const Post = require("../models/postModel");

// Get all posts
exports.getAllPosts = async (req, res, next) => {
  try {
    const posts = await Post.find();

    res.status(200).json({
      status: "success",
      results: posts.length,
      data: {
        posts,
      },
    });
  } catch (error) {
    console.error(error);
    res.status(500).json({
      status: "fail",
      message: "Server Error",
    });
  }
};

// Get a single post by ID
exports.getOnePost = async (req, res, next) => {
  try {
    const post = await Post.findById(req.params.id);

    if (!post) {
      return res.status(404).json({
        status: "fail",
        message: "Post not found",
      });
    }

    res.status(200).json({
      status: "success",
      data: {
        post,
      },
    });
  } catch (error) {
    console.error(error);
    if (error.name === 'CastError') {
      return res.status(400).json({
        status: "fail",
        message: "Invalid post ID format",
      });
    }
    res.status(500).json({
      status: "fail",
      message: "Server Error",
    });
  }
};

// Create a new post
exports.createPost = async (req, res, next) => {
  try {
    // Check if required fields are present
    if (!req.body.title || !req.body.body) {
      return res.status(400).json({
        status: "fail",
        message: "Missing required fields: title and body are required",
      });
    }

    const post = await Post.create(req.body);

    res.status(201).json({
      status: "success",
      data: {
        post,
      },
    });
  } catch (error) {
    console.error(error);
    if (error.name === 'ValidationError') {
      return res.status(400).json({
        status: "fail",
        message: "Validation Error",
        errors: Object.values(error.errors).map(err => ({
          field: err.path,
          message: err.message
        }))
      });
    }
    res.status(500).json({
      status: "fail",
      message: "Server Error",
    });
  }
};

// Update an existing post by ID
exports.updatePost = async (req, res, next) => {
  try {
    const updatedPost = await Post.findByIdAndUpdate(
      req.params.id,
      req.body,
      { new: true, runValidators: true }
    );

    if (!updatedPost) {
      return res.status(404).json({
        status: "fail",
        message: "Post not found",
      });
    }

    res.status(200).json({
      status: "success",
      data: {
        post: updatedPost,
      },
    });
  } catch (error) {
    console.error(error);
    if (error.name === 'ValidationError') {
      return res.status(400).json({
        status: "fail",
        message: "Validation Error",
        errors: Object.values(error.errors).map(err => ({
          field: err.path,
          message: err.message
        }))
      });
    }
    if (error.name === 'CastError') {
      return res.status(400).json({
        status: "fail",
        message: "Invalid post ID format",
      });
    }
    res.status(500).json({
      status: "fail",
      message: "Server Error",
    });
  }
};

// Delete a post by ID
exports.deletePost = async (req, res, next) => {
  try {
    const post = await Post.findByIdAndDelete(req.params.id);

    if (!post) {
      return res.status(404).json({
        status: "fail",
        message: "Post not found",
      });
    }

    res.status(204).json({
      status: "success",
      data: null,
    });
  } catch (error) {
    console.error(error);
    if (error.name === 'CastError') {
      return res.status(400).json({
        status: "fail",
        message: "Invalid post ID format",
      });
    }
    res.status(500).json({
      status: "fail",
      message: "Server Error",
    });
  }
};

postModel.js کد فایل

const mongoose = require("mongoose");

const postSchema = new mongoose.Schema({
  title: {
    type: String,
    required: [true, "Post must have title"],  // Changed from 'require' to 'required'
  },
  body: {
    type: String,
    required: [true, "post must have body"],
  },
});

const Post = mongoose.model("Post", postSchema);
module.exports = Post;

postRoutes.js کد فایل

const express = require("express");
const postController = require("../controllers/postController");

const router = express.Router();

router
  .route("/")
  .get(postController.getAllPosts)
  .post(postController.createPost);

router
  .route("/:id")
  .get(postController.getOnePost)
  .patch(postController.updatePost)
  .delete(postController.deletePost);

module.exports = router;

پستچی را نصب کنید می توانید ویدیوی زیر را نیز تماشا کنید..
https://youtu.be/Hmn5XeZv-GE?si=WCYtlVSuIclqzEkT

در پستچی:
دوباره درخواست POST را با این قالب در Postman ارسال کنید:

آدرس اینترنتی: http://localhost:3000/api/v1/posts
روش: POST
هدرها: نوع محتوا: application/json
بدن:

  • برگه “بدن” را انتخاب کنید
  • “raw” را انتخاب کرده و از منوی بازشو “JSON” را انتخاب کنید
  • داده ها را در این فرمت وارد کنید:
{
    "title": "Your Post Title",
    "body": "Your Post Content"
}

اکنون می توانید به راحتی و بدون مواجهه با هیچ خطایی به آموزش ادامه دهید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا