我有一个函数来获取存储在S3中的.csv
文件,然后读取其中的blob,将其转换为和对象并返回:
import { Storage } from "aws-amplify";
import Papa from "papaparse";
const GetDataFromS3 = (pathToFile) => {
Storage.get(pathToFile, { download: true, expires: 10 })
.then((result) => {
var blob = new Blob([result.Body], {
type: "text/csv",
});
blob.text().then(async (data) => {
const obj = await Papa.parse(data, { header: true });
return obj;
});
})
.catch((err) => console.log(err));
};
export default GetDataFromS3;
问题是,当我在另一个我想使用所获取数据的组件的useEffect
中调用此函数时,数据为undefined
:
useEffect(() => {
async function fetchData() {
const data = await GetDataFromS3("AirPassengers.csv");
await console.log(data); //logs undefined
await setData(data);
}
fetchData();
}, []);
我在做什么错了,也许有更好的方法来实现这一目标?
答案 0 :(得分:0)
对于一个,您只是忽略了GetDataFromS3
中的所有错误,这是错误的形式。
第二,我认为Blob转换是不必要的;您应该就能轻松度过
async function getDataFromS3(pathToFile) {
const result = await Storage.get(pathToFile, { download: true, expires: 10 });
const obj = await Papa.parse(result.Body, { header: true });
return obj;
}