app express.js中的全局功能

时间:2014-05-27 21:42:27

标签: express

尝试在app中使用可以在操作中调用的函数。

放入app.locals不起作用:

app.locals({ 
    "form_tag" : helpers.form_tag,
    "text_field_tag":helpers.text_field_tag,
    sendHttpGs: function(req,res) {
        var querystring = require('querystring');
        var data = querystring.stringify({
            idSong: req.params.idSong
        });

        var data = querystring.stringify({
            track: req.body.track
        });
        var options = {
            host: 'localhost',
            port: 8888,
            path: '/exo/playlists/searchIndex.php',
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                'Content-Length': Buffer.byteLength(data)
            }
        };
        var reqSong = http.request(options, function(ret){
            ret.setEncoding('utf8');
            ret.on('data', function(chunk){
                req.session.search.push(JSON.stringify(chunk));
                res.render('search.ejs', {
                    tracks: chunk,
                    title: req.session.search
                });
            });
        });
        reqSong.write(data);
        reqSong.end();
    }
});

这部分用于将http帖子发送到获取登录和搜索功能的php文件。

我应该把它放在哪里以便像

一样使用它
.post('/loggedin', function(req,res){
    global.sendHttpGS(req,res);
})

1 个答案:

答案 0 :(得分:2)

您可以通过app.set()将一个函数附加到app对象,例如初始化代码中的这样的内容:

app.set('sayHello', function(res) {
  return "hello";
});

然后在您的路线中,该功能将通过req.app.settings提供:

req.app.settings.sayHello(res);