import express from 'express'
import asyncHandler from 'express-async-handler'
import Product from '../models/productModel.js'
const router = express.Router()
router.get('/',asyncHandler(async (req, res) => {
const products = await Product.find({})
res.json(products)
}))
router.get('/:id',asyncHandler(async (req, res) => {
const product = await Product.findById(req.params.id).exec()
if(product)
{
res.json(product)
}
else{
res.status(404).json({message: 'Not found'})
}
}))
export default router
나머지 코드가 작동합니다. 그러나 의도적으로 잘못된 ID를 입력하면 오류 404가 표시되지 않습니다. 오류 부분은 이것입니다.
이 오류 id
는 캐스트 할 수없는 mongoose에 -value를 전달하기 때문에 발생하므로 ObjectId
"Cast to ObjectId가 value에 대해 실패했습니다"라는 오류가 발생합니다. 다음 검사를 사용하여 유효하지 않은 object-id 전달을 방지하고 이에 따라이 경우를 처리 할 수 있습니다. 예 :
import mongoose from "mongoose";
router.get('/:id',asyncHandler(async (req, res) => {
if( !mongoose.isValidObjectId(req.params.id) ) {
return res.status(404).json({message: 'Not found'});
}
// rest of the code
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다