Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 发送axios响应到呈现页面_Javascript_Node.js_Express_Pug_Axios - Fatal编程技术网

Javascript 发送axios响应到呈现页面

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

我使用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)
)中接收到响应,但是我想在我的记录视图页面中使用此数据(使用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
,这让我觉得它看起来不整洁