从快递中间件访问数据
问题描述:
我在node.js中构建应用程序。从快递中间件访问数据
我编写了一个中间件函数钩子,当有人在我的应用上发出GET请求时,就执行这个钩子,就像他们进入主页,配置文件页面等一样。钩子使得来自另一个API的HTTP请求收集数据。
我的问题是如何访问客户端的数据?这里是我的中间件钩:
var request = require('request');
module.exports = {
authentication: function (req, res, next) {
if (req.method === 'GET') {
console.log('This is a GET request');
request("http://localhost:3000/api/employee", function(err, res, body) {
console.log(res.body);
});
}
next();
}
};
它在我的所有途径中使用:
app.use(middleware.authentication)
样品路线:
router.get('/', function(req, res, next) {
res.render('../views/home');
});
通知我用console.log(res.body)
,但我要打印在CLIENT端的内容。有没有人有任何想法如何做到这一点?
答
您可以在req
和res
对象中设置自定义变量。就像下面的代码一样,它将被存储在req.my_data
上。稍后在您的路线中,您可以再次从req
中检索它。
而且,您需要在获得数据后致电next()
,否则在您从request
获取数据之前代码会继续。
var request = require('request');
module.exports = {
authentication: function (req, res, next) {
if (req.method === 'GET') {
console.log('This is a GET request');
request("http://localhost:3000/api/employee", function(err, request_res, body) {
req.my_data = request_res.body;
next();
});
}
}
};
而在您的路线中,通过将数据传递给模板引擎,您可以访问客户端。根据您的模板引擎(ejs
,jade
等),语法会有所不同。
router.get('/', function(req, res, next) {
res.render('../views/home', {data: req.my_data});
});
你是如何渲染路线的?是数据返回简单的HTML你想结合在最终的HTML? – MoLow
嗨 - 我更新了我的问题以显示示例路线。返回的数据是简单的HTML –
你可以添加一个视图,并在注释中标记你想要根目录中的html吗? – MoLow