【发布时间】:2018-12-24 10:51:35
【问题描述】:
我刚开始使用 Express,目前不知道如何使用路由参数发出 Axios 请求并根据请求返回的内容更改一些本地变量。这是我目前所拥有的:
helpers.js
const axios = require('axios');
const {
titleSuffix,
organizationPath,
varietyPath
} = require('./constants');
let organizationData = {};
let varietyData = {};
const Helpers = {
fetchOrganization: (organizationID) => {
axios.get(organizationPath + organizationID)
.then( (response) => {
//console.log(response);
organizationData = response.data.data;
})
.catch( (error) => {
//console.log(error);
});
return organizationData;
},
fetchVariety: (varietyID) => {
axios.get(varietyPath + varietyID)
.then( (response) => {
//console.log(response);
varietyData = response.data.data;
})
.catch( (error) => {
//console.log(error);
});
return varietyData;
},
setOrgOpenGraphTags: (growerHash, res) => {
Helpers.fetchOrganization(growerHash);
res.locals.meta.og.title = organizationData.name + titleSuffix;
console.log('Org = ' + organizationData.name);
},
setVarOpenGraphTags: (contextualId, res) => {
Helpers.fetchVariety(contextualId);
res.locals.meta.og.title = varietyData.name + titleSuffix;
console.log('Var = ' + varietyData.name);
}
};
module.exports = Helpers;
server.js
// Express
const express = require('express');
const app = express();
// Helpers
const {
setOrgOpenGraphTags,
setVarOpenGraphTags
} = require('./helpers');
// Organization
app.get(['/org/:growerHash/*', '/_org/:growerHash/*'], (req, res) => {
setOrgOpenGraphTags(req.params.growerHash, res);
res.render('org');
});
我相当肯定我遗漏了一些小东西,但根据 Axios 的响应似乎无法更改以下本地内容:
res.locals.meta.og.title
根据我目前的情况,如何正确访问 Express 中 Axios 的响应并更改本地人?我真的需要一个基于我提供的代码的答案。目前在我的开发环境中,该请求有效,但在生产中它返回“未定义”。提前非常感谢。
【问题讨论】:
-
fetchOrganization是异步的,您无需等待。 -
我的问题非常具体,您的笼统回答对我没有帮助,也不是重复的。感谢您也对我的彻底问题投了反对票@zero298
-
@zero298 在这里为您提供服务。他的回答给了你你需要的一切,所以我建议你仔细阅读然后接受它——你不太可能得到更多的答案。
标签: javascript node.js express axios