如何在axios函数之外从axios返回值



我有一个路由器。Get调用另一个函数,如下所示:

router.get("/", (req, res) => {
const data = especiaisTest.getEspeciais();
console.log(data);
});

调用的函数是这样的:

function getEspeciais() {
db.query(async (tokenResponse) => {
try {
const response = await axios.get(URL, {
headers: {
Authorization: `Bearer ${tokenResponse.accessToken}`,
},
});
return response.data;
} catch (error) {
console.error(error);
}
});
}

每当我称呼它,我只是得到安慰。记录了一个未定义的。

我尝试返回db之外的值。查询功能,例如:

function getEspeciais() {
db.query(async (tokenResponse) => {
try {
const response = await axios.get(URL, {
headers: {
Authorization: `Bearer ${tokenResponse.accessToken}`,
},
});
return response.data;
} catch (error) {
console.error(error);
}
});
return 'hello'
}

它将在控制台中显示'hello'。我怎样才能响应。从数据库中取出数据。查询以便能够显示数据?

问题码


router.get("/", (req, res) => {
const data = especiaisTest.getEspeciais();
console.log(data);
});

function getEspeciais() {
db.query(async (tokenResponse) => {
try {
const response = await axios.get(URL, {
headers: {
Authorization: `Bearer ${tokenResponse.accessToken}`,
},
});
return response.data;
} catch (error) {
console.error(error);
}
});
}

应:

router.get("/", async (req, res) => {
const data = await especiaisTest.getEspeciais();
async function getEspeciais() {
return db.query(async (tokenResponse) => {

然后你会看到一些其他的东西而不是未定义的。
如果返回undefined,db.query方法不返回任何值。