Для того чтобы класс в Node.js был передан и express мог использовать методы post, put и другие, необходимо использовать middleware - это функцию, которая выполняется перед тем, как обработчик маршрута будет вызван.
Есть несколько способов передать класс в express.
1. Использование глобальной переменной:
const express = require('express'); const app = express(); class MyClass { // ... } // Создаем экземпляр класса const myClassInstance = new MyClass(); // Передаем экземпляр класса через глобальную переменную app.use((req, res, next) => { req.myClass = myClassInstance; next(); }); // Теперь класс доступен в обработчиках маршрутов app.post('/myroute', (req, res) => { // Используем метод класса req.myClass.someMethod(); res.send('Success'); }); app.listen(3000, () => { console.log('Server is running on port 3000'); });
2. Использование middleware функции:
const express = require('express'); const app = express(); class MyClass { // ... } // Создаем экземпляр класса const myClassInstance = new MyClass(); // Создаем middleware функцию, которая передает класс function myMiddleware(req, res, next) { req.myClass = myClassInstance; next(); } // Подключаем middleware к каждому маршруту app.use(myMiddleware); // Теперь класс доступен в обработчиках маршрутов app.post('/myroute', (req, res) => { // Используем метод класса req.myClass.someMethod(); res.send('Success'); }); app.listen(3000, () => { console.log('Server is running on port 3000'); });
3. Использование класса-обертки для express:
const express = require('express'); const app = express(); class MyClass { // ... } class Wrapper { constructor() { this.myClass = new MyClass(); } // Методы-обертки для express post(path, handler) { app.post(path, (req, res) => { req.myClass = this.myClass; handler(req, res); }); } put(path, handler) { app.put(path, (req, res) => { req.myClass = this.myClass; handler(req, res); }); } // ... } // Создаем экземпляр класса-обертки const wrapper = new Wrapper(); // Определяем маршруты с использованием методов-оберток wrapper.post('/myroute', (req, res) => { // Используем метод класса req.myClass.someMethod(); res.send('Success'); }); app.listen(3000, () => { console.log('Server is running on port 3000'); });
Каждый из этих способов позволяет передать класс в express и использовать его методы в обработчиках маршрутов. Выбор способа зависит от особенностей вашего проекта и предпочтений разработчиков.