【发布时间】:2021-05-22 16:41:15
【问题描述】:
我们如何在路由文件中使用依赖注入的概念并在服务器文件中添加?
我尝试在我的节点项目中使用依赖注入,但我认为我没有走在正确的道路上。我正在尝试将我的UserService 注入我的AppRouter。我的注册方法以前是static,但我将其更改为public 方法,因为static 成员不允许我注入依赖项。
首先this.userService.UserRegistrationService 显示错误undefined。请提出正确的方法,因为我是新的表达和节点。
路由文件
import express from 'express';
import bodyParser = require('body-parser');
import { API } from ".././utilities/api";
import UserService from '../api/services/UserService';
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
import validationMw from '../api/middlewares/request_validation';
import UserDao from '../api/requests/userDto';
let cors = require('cors');
//let bodyParser = require('body-parser');
class AppRouter {
private userService: UserService;
public router: express.Router;
public userObj: any;
constructor(userService: UserService) {
this.router = express();
this.router.use(cors());
this.AddMiddlewares();
this.AddRoutes();
this.userService = userService;
}
// Add all middlewares here that will get request before routes.
AddMiddlewares(): void { // Used to parse req.body into json object
this.router.use(bodyParser.json());
this.router.use(bodyParser.urlencoded({ extended: false }));
//this.router.use(LogsService.LogRequest);
}
AddRoutes(): void {
console.log(API.RegistrationEmployee);
this.router.post(API.RegistrationEmployee, this.userService.UserRegistrationService);
}
}
export default new AppRouter(new UserService).router;
用户服务类
import { Request, Response } from "express-serve-static-core";
import { isNullOrUndefined, isNull } from "util";
import { logger } from "../../utilities/logger";
import UserController from "../controllers/userController";
import { ProjectConstants, ErrorCodes } from "../../utilities/config";
import {
ReasonPhrases,
StatusCodes,
getReasonPhrase,
getStatusCode,
} from "http-status-codes";
import ResponseService from "../services/ResponseService";
export default class UserService {
private userController: UserController;
constructor(userController?: UserController) {
this.userController = userController;
}
public async UserRegistrationService(req: Request, res: Response) {
console.log(434);
// UtilityMethods.ConsoleLog("UserRegisterService - BODY", req.body);
logger.info("UserRegistration- function call " + JSON.stringify(req.body));
await this.userController.registration(req.body)
.then((data: any) => {
// UtilityMethods.ConsoleJSON("03 GetCategoryService", data);
ResponseService.SendSucessResponse(req, res, data, ErrorCodes.OK);
})
.catch(function (err: any) {
ResponseService.SendErrorResponse(req, res, err);
});
}
}
【问题讨论】:
-
有谁能帮帮我吗?
标签: node.js typescript express dependency-injection