Вопрос по node.js, нужно передать данные с роута в контроллер, как?

route.js я подключаю с сервера и передаю в него app и io, суть проблемы в том что мне io нужно передать в функцию в контроллере который будет исполнять этот запрос.

route.js
module.exports = function(app, io) {

	app.post('/api/order/answer', answerController.newAnswer);

}
answerController.newAnswer исполняетсья но он сам както принимает reques и response 3 параметром идет next midellware а мне нужно банально сокет передать тоесть io,  а я не могу подскажите как : (

controler.js

        function newAnswer(req, res) {
        //тут мне нужен доступ до 'io'
        }

module.exports = {
    newAnswer: newAnswer // так я даю видимость этой функции в роуте
}

Даже не знаю как загуглить чтобы узнать как это сделать... ребят помогите)
  • Вопрос задан
  • 551 просмотр
Решения вопроса 1
@Provocation
В двух словах: не нужно пытаться передавать io в качестве параметра.
Его можно сделать "глобальным" на уровне app следующим образом.
К примеру, после
var io = require('socket.io')(server);
написать
app.set('io', io);
после чего можно в любом обработчике получить его через
var io = req.app.get('io');
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@superivankorolev
Подключаем middleware, впереди тех обработчиков, которым нужен сокет.
app.use(require(__dirname + '/middleware/SOCKET'));


Внутри пишем.

req.app.locals.io=io;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы