【发布时间】:2020-02-26 22:13:49
【问题描述】:
大家早上好!我在从其他函数获取 axios 响应时遇到问题。 具体来说,我正在咨询我在另一个网站上创建的服务,并让它返回一个数据库名称。 目前,当我直接使用 Postman 上的标头调用 api 时,它可以工作,并且在我使用 axios 创建的 getDbName() 函数内完成时也是如此,但是当我尝试将该响应返回到另一个响应时,它会打印出“未定义”。我的理解是,只要使用 response => 箭头函数,调用就会正确地等待响应。我的假设错了吗?
我已经尝试了许多不同的返回变量的尝试。我使用下面 SO 上的许多链接进行了调查,但仍然无法正常工作:
axios promise returns correct value in "axios.all" function, but is undefined in the "then" function
Axios prints value on console but returns undefined
GET request with axios returning undefined
[dbController.js]
import axios from 'axios';
import apiconfig from '../config/apiconfig';
function getDbName() {
return axios({
method: 'GET',
url: `${apiconfig.cb_url}/api/DbToBeWorked`,
headers: apiconfig.optionsHeaders,
}).then(dbn => {
console.log(dbn.data.db); //logs database name correctly
return dbn.data.db;
});
};
[routes.js]
import { Router } from 'express';
const routes = new Router();
routes.get('/api/test', (req, res) => {
getDbName().then(dbn => {
console.log(dbn) //this logs 'undefined'
return res.status(200).json(dbn);
});
});
两个 console.logs 的输出都应该是 dbn(数据库名称)。目前,一个返回正确的名称,另一个返回 undefined。
【问题讨论】:
标签: javascript node.js http axios backend