【发布时间】:2021-02-03 18:26:18
【问题描述】:
“dataService”类中的“getData”函数对 API 执行 GET 请求,“updateData”函数中的 console.log 会打印正确的信息,但会为“http://localhost”返回一个空对象:xxxx/api/数据'。我认为这是由于异步问题造成的,但我不知道如何解决它。有什么想法吗?
dataService.ts:
import { Format } from '../types';
import axios from 'axios';
const token = process.env.TOKEN;
const url = `https://www.something.com/somequery?someapikey=${token}`;
const getData = async () => {
try {
const response = await axios.get<Format>(url);
return response.data;
} catch (error) {
console.error(error);
}
};
const updateData = async (): Promise<Format | undefined> => {
const allData = await getData();
console.log(allData, 'allData in backend');
//edit allData to suitable format here
return allData;
};
export default {
updateData
};
数据.ts:
import express from 'express';
import dataService from '../services/dataService';
const router = express.Router();
router.get('/', (_req, res) => {
res.send(dataService.updateData());
});
export default router;
index.ts:
import express from 'express';
const app = express();
...
import dataRouter from './routes/data';
...
app.use(express.json());
...
app.use('/api/data', dataRouter);
...
【问题讨论】:
-
尝试在getData函数中记录响应对象
-
在“getData”中记录 response.data 打印与在“updateData”中记录 allData 相同的输出。按顺序:response.data 第一,allData 第二。
标签: javascript node.js typescript express axios