MERN Part-4.2를 사용하는 ECOMMERCE 웹 사이트( 백엔드 오류 처리기 {asynchronous} )
이 블로그에서는 비동기 함수를 위한 오류 처리기를 만들 것입니다.
이 오류 처리기를 만들지 않으면 어떤 문제가 발생하는지 봅시다.
여기에서
name
를 생성하는 동안 Product
속성을 제거했으며 Error
를 얻고 서버가 충돌합니다. 따라서 이 문제를 극복하기 위해 Error Handler
를 만들 것입니다.1 단계
catchAsyncErrors.js
폴더 안에 middleware
라는 파일을 만듭니다.2 단계 이제
theFunc
(아무 이름이나 쓸 수 있음)라는 이름의 함수를 req
, res
& next
3개의 매개변수로 만들 수 있습니다.그런 다음
javascript
라는 Promise
의 inbuild 클래스와 resolve
를 인수로 사용하는 메서드theFunc(req, res, next)
를 사용합니다. 또한 그 후에 .catch
인수가 있는 next
메서드를 넣습니다.resolve
& catch
는 try catch
블록처럼 작동합니다.3단계 이제
catchAsyncErrors
파일에서 productController
를 가져옵니다.이제
catchAsyncErrors()
앞에 async()
를 추가하면 코드는 다음과 같습니다.이제 해당 오류가 계속 발생하는지 테스트해 보겠습니다.
Step-4 우리가 만들 함수뿐만 아니라 이전에 만든 모든 함수에 대해 이 작업을 수행합니다.
const Product = require("../models/productModel");
const ErrorHandler = require("../utils/errorHandler");
const catchAsyncErrors = require("../middleware/catchAsyncErrors");
// create product --- Admin
exports.createProduct = catchAsyncErrors(async (req, res, next) => {
const product = await Product.create(req.body);
res.status(201).json({
success: true,
product,
});
});
// Get all products
exports.getAllProducts = catchAsyncErrors(async (req, res, next) => {
const products = await Product.find();
res.status(200).json({
success: true,
products,
});
});
// get product details
exports.getProductDetails = catchAsyncErrors(async (req, res, next) => {
const product = await Product.findById(req.params.id);
if (!product) {
return next(new ErrorHandler("Product Not Found", 404));
}
res.status(200).json({
success: true,
product,
});
});
// Update product ---Admin
exports.updateProduct = catchAsyncErrors(async (req, res, next) => {
let product = await Product.findById(req.params.id);
if (!product) {
return next(new ErrorHandler("Product Not Found", 404));
}
product = await Product.findByIdAndUpdate(req.params.id, req.body);
res.status(200).json({
success: true,
product,
});
});
// Delete Product ---Admin
exports.deleteProduct = catchAsyncErrors(async (req, res, next) => {
const product = await Product.findById(req.params.id);
if (!product) {
return next(new ErrorHandler("Product Not Found", 500));
}
await product.remove();
res.status(200).json({
success: true,
message: "Product Deleted Successfully",
});
});
에서 처리를 위한 오류 처리기
Unhandled Promise Rejection
등을 더 만들 예정입니다....
Reference
이 문제에 관하여(MERN Part-4.2를 사용하는 ECOMMERCE 웹 사이트( 백엔드 오류 처리기 {asynchronous} )), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bikramjeetsarmah/ecommerce-website-using-mern-part-42-backend-error-handler-asynchronous--475l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)