変数をモジュールに渡そうとしています。 Node.jsのでnodejsがパラメータをパラメータに渡す問題
I次の配布があります。
のNode.jsサーバー(server.js):
// modules =================================================
var express = require('express');
var app = express();
// configuration ===========================================
app.set('port', process.env.PORT || 3000);
var myRoutes = require('./my.router')(app);
// Start the Server ===========================================
app.listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));
});
exports = module.exports = app; // expose app
ルータ(my.router.js):
var myCtrl = require('./my.controller');
module.exports = function(app) {
app.get('/api/some', myCtrl.some);
app.get('/api/other', myCtrl.other);
}
を
コントローラ(my.controller.js):
exports.some = function(req, res, next) {
res.send('some');
};
exports.other = function(req, res, next) {
res.send('other');
}
これは問題ありません。私の問題は、socket.ioを使って/ api/someが呼び出されたときにイベントを発行しようとするときに来ます。
私は、ルータを変更するようにサーバーを作成するために、Appオブジェクトが必要になります。
var myCtrl = require('./my.controller');
module.exports = function(app) {
var server = require('http').createServer(app);
var io = require('socket.io')(server);
server.listen(3001);
app.get('/api/some', myCtrl.something);
app.get('/api/other', myCtrl.other);
}
そして、私は/ API /一部が呼び出されたときに、コントローラがイベントを発するように変更します。
exports.some = function(req, res, next) {
io.sockets.emit('my_event', {});
res.send('some');
};
exports.other = function(req, res, next) {
res.send('other');
}
コントローラ内部では、この作業を行うためにioオブジェクトが必要です。
もう少しnode.jsの知識がある人には聞こえるかもしれませんが、動作させることはできません。
私はapp.getようなものが必要でしょう( '/ API /一部'、myCtrl.something(IO))が、これは動作していない...