Async/await - 数据未定义
Async/await - data is undefined
尝试将 CSV 转换为 JSON,然后下载图像,然后将其上传到 S3 存储桶,然后更新当前 JSON,最后生成新的 CSV。但是代码不会等待异步函数完成所以 const data = await handle_image_URLs(csv);
returns as undefined.
//parse CSV - extract images, then upload to S3 bucket
const handle_image_URLs = file => {
new Promise((resolve, reject) => {
fs.createReadStream(file)
.pipe(csv_to_json())
.on("data", async data => {
// console.log("data", data);
try {
if (is_image_url(data.image_link)) {
console.log("data.image_link", data.image_link);
image_buffer = await download_image(data.image_link);
name = uuid() + ".jpg";
const location = await upload_to_S3(image_buffer, name);
//Inject back updated image url
data.image_link = location.Location;
//New generated data goes into an array
results.push(data);
}
// console.log("RESULT", results);
resolve(results);
} catch (error) {
reject(error);
}
});
});
};
快速处理 csv 上传
app.post("/", upload.single("file"), async (req, res) => {
const file = req.file;
const csv = `./uploads/${file.originalname}`;
const data = await handle_image_URLs(csv);
console.log("DATA", data);
// await json_to_csv_converter.json2csv(data, json2csvCallback);
res.status(200).json({ message: "working " });
});
将 return new promise((resolve, reject))
更新为 return new promise( async (resolve, reject))
它应该可以工作
尝试将 CSV 转换为 JSON,然后下载图像,然后将其上传到 S3 存储桶,然后更新当前 JSON,最后生成新的 CSV。但是代码不会等待异步函数完成所以 const data = await handle_image_URLs(csv);
returns as undefined.
//parse CSV - extract images, then upload to S3 bucket
const handle_image_URLs = file => {
new Promise((resolve, reject) => {
fs.createReadStream(file)
.pipe(csv_to_json())
.on("data", async data => {
// console.log("data", data);
try {
if (is_image_url(data.image_link)) {
console.log("data.image_link", data.image_link);
image_buffer = await download_image(data.image_link);
name = uuid() + ".jpg";
const location = await upload_to_S3(image_buffer, name);
//Inject back updated image url
data.image_link = location.Location;
//New generated data goes into an array
results.push(data);
}
// console.log("RESULT", results);
resolve(results);
} catch (error) {
reject(error);
}
});
});
};
快速处理 csv 上传
app.post("/", upload.single("file"), async (req, res) => {
const file = req.file;
const csv = `./uploads/${file.originalname}`;
const data = await handle_image_URLs(csv);
console.log("DATA", data);
// await json_to_csv_converter.json2csv(data, json2csvCallback);
res.status(200).json({ message: "working " });
});
将 return new promise((resolve, reject))
更新为 return new promise( async (resolve, reject))
它应该可以工作