Я пытаюсь попрактиковаться в создании узла, создав небольшое приложение, которое позволяет пользователю загружать файл.
Я сохранил файл на S3, сохранил URL в БД mLab и хочу загрузитьфайл в приложение, чтобы я мог использовать URL-адрес в качестве href
на стороне клиента.В данный момент он работает, но загружает пустой файл.Я думаю, это связано с тем, что он запускает следующую then()
перед загрузкой файла.
Это код, который у меня сейчас есть:
(async err => {
const charge = await stripe.charges
// create stripe charge
.create({
...
})
// when the payment is successful,
// download the file locally to a 'dist' folder
// so we can use it on the success page
.then(() => {
download(url_to_file, "dist").then(() => {
console.log("done!");
});
})
// then render the success page
.then(
res.render("success", {
fileUrl: ...
})
)
Так на клиентеЯ могу (используя ejs) сделать что-то вроде:
<a href="<%= /dist/fileUrl %>">Download</a>
Я очень новичок в обещаниях и не уверен, как дождаться полного завершения метода загрузки, прежде чем запускать следующий, затем ирендеринг страницы успеха.
В данный момент метод запускается, затем отображается страница успеха, а затем файл появляется в приложении.Это позволяет загружать файл, но файл пуст.
Кто-нибудь может указать мне правильное направление / объяснить, как ждать завершения загрузки перед запуском следующего метода .then()
?Любая помощь будет высоко ценится!