2017-10-12 70 views
0

我从外部API使用爱可信请求数据,我想使用的反应在我的渲染页面,我的代码如下:发送Axios公司响应呈现

//This is from my controller which is required in my main routes 
exports.recordBySlug = async (req, res, next) => { 
    const record = await Record.findOne({ slug: req.params.slug }); 
    if(!record) return next(); 

    const url = API_URL 

    axios 
     .get(url) 
     .then(res => { 
      const album = res.data.album; 
      console.log(album) 
     }) 
     .catch(console.error); 

    res.render('record', { album }) 
}; 

我收到的回应控制台(从console.log(album)),当我刷新'记录'页面完全按照我希望,但是我想在我的记录查看页面(使用帕格)使用此数据,但我得到一个“ReferenceError:专辑没有定义”

我想我可能需要使用一个等待,但不知道我做对了。我希望我接近解决方案!

回答

1

你可以只移动呼叫render回调里面:

axios 
    .get(url) 
    .then(res => { 
     const album = res.data.album; 
     console.log(album); 
     res.render('record', { album }) 
    }) 
    .catch(next); 

如果你想使用await隐藏承诺这将是这样的:

try { 
    const res = await axios.get(url); 
    const album = res.data.album; 

    console.log(album); 
    res.render('record', { album }); 
} 
catch (err) { 
    next(err); 
} 

不知道如果有办法摆脱try/catch,这使我看起来不整洁。