将数据从快速路由传递到节点模块导出功能

时间:2016-11-30 22:30:49

标签: angularjs node.js express

我是节点的新手,我认为我需要使用中间件,但我不能围绕它实际使用的内容扭曲,或者这是否意味着要使用它。我有数据从我的视图发布到快速路线。

ROUTE - route.js

var GetPlayer = require('./models/getPlayer.js');
module.exports = function(app) {    
app.post('/api/getPlayer', function(req, res) {
        //GetPlayer.apiGetPlayer(req.body.username);
        console.log(req.body.username); //this logs the correct data
    });
}

但现在我需要将该数据传递给节点api调用并将该响应发送回客户端。但是我无法获得调用该函数或将数据传递给它的路径。

MODULE.EXPORT - getPlayer.js

module.exports = {
    apiGetPlayer: function(error, res) {
        console.log("in get player");
        console.log(res);
    }
}

1 个答案:

答案 0 :(得分:1)

如果你想为多个路径做这件事,你只想使用Express中间件(即使用body-parser将请求体从JSON解析为实际的对象)。根据提供的代码,这似乎有点过分。解决这个问题的一种方法是只获取用户名并将回调函数传递给getPlayer。然后,当传递给apiGetPlayer()的回调函数返回时,根据apiGetPlayer()的结果回复请求者。

getPlayer.js

module.exports = 
    // callback is an error-first callback function
    apiGetPlayer: function(username, callback) {
        let err;
        let player;

        // Logic for getting player go here

        // If an error occurs return an error to the callback
        if (err)
            return callback(err, null);

        return callback(null, player);
    }
}

/ api / getPlayer route

app.post('/api/getPlayer', (req, res) => {
    GetPlayer.apiGetPlayer(req.body.username, (err, player) => {
        if (err)
            return res.status(500).send(err);

        return res.status(200).send(player);
    });
});