Как контроллер express все еще работает без привязки методов

#javascript #node.js #typescript #express

Вопрос:

В моем приложении typescript express. У меня есть контроллер и настройка маршрутизатора, как показано на рисунке

 // TestController.ts
export class TestContoller {
    async create(req: express.Request, res. express.Response) {
        res.json({
            status: 'ok',
        });
    }
}
 
 // router.ts
import express from 'express';
import { TestContoller } from './TestContoller';

const router = express.Router();
const testController = new TestController();

router.post('/', testController.create);

export default router
 

Я должен использовать

 router.post('/', testController.create.bind(testController))
 

или добавьте это в конструктор контроллера

 this.create = this.create.bind(this)
 

но мой маршрутизатор все еще работает, не делая ни того, ни другого. Почему это возможно?

Комментарии:

1. create не используется this , так что это действительно не имеет значения…

2. маршрутизатор принимает функцию в качестве промежуточного программного обеспечения, поэтому, по сути, вам не нужно привязывать функцию к какому-либо маршруту как таковому

3. @deceze Ты прав. Протестировано с помощью контроллера, используемого this в методе, и это не удалось