В node js Я использовал обернуть свою асинхронную c функцию следующим образом в catchAyn c. js file
module.exports = fn => {
return (req, res, next) => {
fn(req, res, next).catch(next)
;}
;};
, и в своем контроллере я импортирую и вызываю вот так
const catchAsync = require('./../utils/catchAsync');
exports.signup = catchAsync(async (req, res, next) => {
const newUser = await User.create({
name: req.body.name,
email: req.body.email,
password: req.body.password,
passwordConfirm: req.body.passwordConfirm
});
const url = `${req.protocol}://${req.get('host')}/me`;
// console.log(url);
await new Email(newUser, url).sendWelcome();
createSendToken(newUser, 201, req, res);
});
но мой вопрос заключается в том, как мне обернуть эту оболочку catchAsyn c в основную функцию моего класса в машинописи? Вот коды catchAsyn c .ts file
import {Request, Response, NextFunction, RequestHandler} from "express";
declare function catchAsync(
fn: (req: Request, res: Response, next: NextFunction) => Promise<Response | void>
): RequestHandler;
export default catchAsync;
Вот мой код файла контроллера
import catchAsync from "../util/catchAsync";
export class UserController {
public async signup (req: Request, res: Response, next: NextFunction) {
const newUser = await User.create({
name: req.body.name,
email: req.body.email,
password: req.body.password,
passwordConfirm: req.body.passwordConfirm
});
const url = `${req.protocol}://${req.get('host')}/me`;
// console.log(url);
await new Email(newUser, url).sendWelcome();
createSendToken(newUser, 201, req, res);
};
}
Буду очень признателен, если вы поможете мне разобраться с этой проблемой.
Спасибо.