猿问

如何在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中的的数据呢/?


慕容708150
浏览 956回答 1
1回答

FFIVE

把next()放到request方法的回调函数里
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答