2017-10-12 124 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,這使我看起來不整潔。