Javascript 发送axios响应到呈现页面
我使用axios从外部api请求数据,我希望在呈现页面中使用响应,我的代码如下:Javascript 发送axios响应到呈现页面,javascript,node.js,express,pug,axios,Javascript,Node.js,Express,Pug,Axios,我使用axios从外部api请求数据,我希望在呈现页面中使用响应,我的代码如下: //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
//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)
)中接收到响应,但是我想在我的记录视图页面中使用此数据(使用pug),但我得到一个“ReferenceError:album未定义”
我想我可能需要使用等待,但不确定我是否做对了。我希望我接近解决方案 您可以将对
render
的调用移动到回调内部:
axios
.get(url)
.then(res => {
const album = res.data.album;
console.log(album);
res.render('record', { album })
})
.catch(next);
如果您想使用wait
隐藏承诺,它将如下所示:
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
,这让我觉得它看起来不整洁