#node.js #awilix
Вопрос:
У меня есть модель под названием cabin, поэтому у меня есть cabinController и cabinRepository, и я хочу использовать репозиторий внутри контроллера, но это значение равно нулю.
Кают-компания:
class CabinRepository {
get() {
return 'Hello cabin repository';
}
}
module.exports = { CabinRepository };
Контроллер кабины
class CabinController {
constructor({ cabinRepository }) {
this.cabinRepository = cabinRepository;
}
getCabins(req, res) {
return this.cabinRepository.get();
}
}
module.exports = { CabinController };
И я использую awilix для введения классов:
const { createContainer, asClass, asFunction } = require('awilix');
const { Server } = require('./server');
//ROUTES
const Routes = require('../routes/adminRoutes');
// Controller
const { CabinController } = require('../controllers/cabinController');
// Repositories
const { CabinRepository } = require('../models/repositories/cabinRepository');
//CONTAINER
const container = createContainer();
container.register({
server: asClass(Server).singleton(),
router: asFunction(Routes).singleton(),
cabinRepository: asClass(CabinRepository).singleton(),
cabinController: asClass(CabinController).singleton(),
});
module.exports = { container };
Административные маршруты
const { Router } = require('express');
const cors = require('cors');
const adminRoutes = function ({ cabinController }) {
const router = Router();
const apiRoutes = Router();
// Cabin Routes
apiRoutes.get('/cabin', cabinController.getCabins);
apiRoutes.use(cors());
router.use('/api', apiRoutes);
return router;
};
module.exports = adminRoutes;
The strange thing here is that I inject cabinRepository inside the adminRoute function as cabinController, here it works if I do cabinController.get(), but inside the controller I get null with the following error:
Ошибка типа: Не удается прочитать свойства неопределенного (чтение ‘cabinRepository’) в getCabins (/приложение/контроллеры/cabinController.js:7:17) на уровне.обрабатывать [как handle_request] (/приложение/node_modules/express/lib/маршрутизатор/layer.js:95:5) на следующем (/приложение/node_modules/express/lib/маршрутизатор/маршрут.js:137:13) на маршруте.отправка (/приложение/node_modules/express/lib/маршрутизатор/route.js:112:3) на уровне.обработайте [как handle_request] (/app/node_modules/express/lib/маршрутизатор/слой.js:95:5) в /app/node_modules/express/lib/маршрутизатор/индекс.js:281:22 в функции.параметры процесса (/app/node_modules/express/lib/маршрутизатор/индекс.js:335:12) в следующем (/app/node_modules/express/lib/маршрутизатор/индекс.js:275:10) в функции.дескриптор (/app/node_modules/express/lib/маршрутизатор/индекс.js:174:3) на маршрутизаторе (/app/node_modules/express/lib/маршрутизатор/индекс.js:47:12)