如何在express的中间件中使用request请求接口数据或进行数据库查询

新手上路,请多包涵

如何在express的中间件中使用request请求接口数据或进行数据库查询?
例如有个 url = "http://127.0.0.1/shops/××××/"
我想在express中使用中间件先给每一个shop路径的请求添加一些公共的数据,并传递给后面的处理函数,

app.use('/shops', function (req, res, next) {
    res.locals["title"] = "New Page Title";  
    next();
});

这样每一个经过shops的请求都会被添加一个title,但是如果我的数据是从通过request异步请求后端接口,或者使用mysql请求, 这时,数据都从对应的callback中返回,无法进行res.locals赋值。
app.use('/shops', function (req, res, next) {

res.locals["title"] = "New Page Title";  
var shop_url = "http://127.0.0.1/api/shop/";
request(shop_url, function (err, resonse, body) {
    res.locals.info = body;   //异步赋值失败
})
console.log(res.locals.info); // undefined
next();

});
应该怎么做才能获得callback中的的数据呢/?

阅读 3k
1 个回答
新手上路,请多包涵

把next()放到request方法的回调函数里

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题