我是节点的新手,我认为我需要使用中间件,但我不能围绕它实际使用的内容扭曲,或者这是否意味着要使用它。我有数据从我的视图发布到快速路线。
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);
}
}
答案 0 :(得分:1)
如果你想为多个路径做这件事,你只想使用Express中间件(即使用body-parser将请求体从JSON解析为实际的对象)。根据提供的代码,这似乎有点过分。解决这个问题的一种方法是只获取用户名并将回调函数传递给getPlayer。然后,当传递给apiGetPlayer()
的回调函数返回时,根据apiGetPlayer()
的结果回复请求者。
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);
}
}
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);
});
});