Mernスタックミドルウェア:idが有効なオブジェクトタイプであるかどうかを確認する


このミドルウェアは、メルンスタックプロジェクトのために作られました.
IDを取得して、単一のオブジェクトを収集から取得するルート上でGET要求を実行するときには、提供されるIDは、データベース内の有効なオブジェクトを表していない場合を処理することが重要です.GET http://localhost:5000/api/post/5f85294e21fcef22fd5b8f78我々がそれをするのを援助するために我々がつくることができる若干のミドルウェアは、ここにあります.
const mongoose = require('mongoose');

// middleware to check for a valid object id in the url
const checkObjectId = (idToCheck) => (req, res, next) => {
  if (!mongoose.Types.ObjectId.isValid(req.params[idToCheck]))
    return res.status(400).json({ msg: 'Invalid ID' });
  next();
};

module.exports = checkObjectId;
ここでcheckObjectIDをインポートして、idを返し、オブジェクトを返す任意のリクエストで使用できます.
// IMPORTS
const express = require('express');
const router = express.Router();
// MIDDLEWARE
const checkObjectId = require('../../middleware/checkObjectId');
// MODELS
const Post = require('../../models/Post');

// @route    GET api/posts/:id
// @desc     Get post by ID
// @access   Public
router.get(
  // ROUTE
  '/:id',
  // MIDDLEWARE
  checkObjectId('id'),
  // CALLBACK
  async (req, res) => {
    try {
      const post = await Post.findById(req.params.id);

      if (!post) {
        return res.status(404).json({ msg: 'Post not found' })
      }

      res.json(post);
    } catch (err) {
      console.error(err.message);

      res.status(500).send('Server Error');
    }
  }
);