我使用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 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:相册未定义”
我想我可能需要使用await但不确定我做得对。我希望我接近解决方案!
答案 0 :(得分:1)
您可以将调用移至render
以进入回调:
axios
.get(url)
.then(res => {
const album = res.data.album;
console.log(album);
res.render('record', { album })
})
.catch(next);
如果您想使用await
来隐藏Promise,它将是这样的:
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
,这让我看起来不整洁。