У меня есть код в моем контроллере, например, следующий
const express = require('express');
const AuthService = require('../../services/auth');
let router = express.Router();
router.get('/login', AuthService.login);
Теперь, когда я вызываю метод входа в систему в своих службах и вызываю другой метод изнутри метода входа, например.
class Authentication {
login (req, res) {
this.notify();
res.send({message: 'login method'});
}
notify () {
console.info('this is just a notification method.');
}
}
module.exports = new Authentication();
Я получаю следующую ошибку.
TypeError: Cannot read property 'notify' of undefined
Я знаю, что это проблема контекста, но я не знаю, как ее исправить.
Отправить тоже здесь работает. Но проблема не в этом.
var self = this; self.notify (); попробуй это.
(TL; DR дубликата: заменить AuthService.login на AuthService.login.bind(AuthService))
@SameerAhmad Тоже не работает.
@JoeClay Я знаю, что привязка может решить эту проблему, но я хочу знать, нужно ли мне делать это для каждого маршрута?
просто используйте стрелочные функции или привязку. И да, вы должны сделать это для каждого промежуточного программного обеспечения, которое требует правильного контекста.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Разве это не
res.end();вместоres.send();?