Моя команда и я пробовали множество методов для решения этой проблемы, но всякий раз, когда мы go загружаем файл, мы получаем сообщение о том, что файл не существует.
Каков типичный способ сделай это. Это похоже на то, что должно быть легко, но я не могу найти ничего, что работает.
Для пояснения, мой Node JS запускает функцию, которая загружает файл в одно ведро. Это запускает облачную функцию, которая выполняет некоторую обработку, а затем загружает файл в другое ведро. Я хочу, чтобы Node JS дождался загрузки этого другого файла, а затем загрузил файл.
const storage = new Storage();
const bucket = storage.bucket('receipttext');
async function uploadFile() {
await storage.bucket("BUCKET_ONE").upload('FILE_PATH', {
gzip: true,
metadata: {
cacheControl: 'public, max-age=31536000',
},
});
console.log('step1!');
const options = {
destination: 'DOWNLOAD_PATH',
};
//Something needs to go here to cause Node JS to wait until the file exists
let file = null;
let ifExist = false;
while(!ifExist) {
console.log('step1.1!');
file = await storage
.bucket("BUCKET_TWO")
.file('FILE_NAME');
ifExist = file.exists();
//console.log('step1.2!',ifExist);
console.log('step2!');
}
//Downloads the File
await file.download(options).catch(function(error){
console.log(2);
});
console.log(
`gs:// downloaded .`
);
console.log('step3!');
let obj = JSON.parse(fs.readFileSync('DOWNLOAD_PATH', 'utf8'));
console.log(obj,"here");
res.json({response: obj});
}
uploadFile().catch(console.error);
console.log("successUpload");