Mernスタックミドルウェア:idが有効なオブジェクトタイプであるかどうかを確認する
1514 ワード
このミドルウェアは、メルンスタックプロジェクトのために作られました.
IDを取得して、単一のオブジェクトを収集から取得するルート上でGET要求を実行するときには、提供される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');
}
}
);
Reference
この問題について(Mernスタックミドルウェア:idが有効なオブジェクトタイプであるかどうかを確認する), 我々は、より多くの情報をここで見つけました https://dev.to/3mustard/mern-stack-middleware-check-for-valid-object-based-on-id-3o69テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol