Я пытаюсь загрузить файл / хранилище с помощью узла и сохранить файл в Gird FS. Ниже приведен пример кода. Функция загрузки работает отлично. Из-за асинхронной c природы узла ответ немедленно отправляется обратно в браузер. Я хочу задержать ответ до тех пор, пока не будет выполнена функция обратного вызова. Примечание: я также пытался отправить окончательный ответ внутри функции обратного вызова, но все равно это не сработало.
Пожалуйста, поделитесь некоторыми идеями.
const multer = require("multer");
const GridFsStorage = require("multer-gridfs-storage");
const mongoose = require("mongoose");
mongoose.connect(CONFIG.dbConfig, {useNewUrlParser: true, useUnifiedTopology: true} );
var storage = new GridFsStorage({
url: CONFIG.dbConfig,
options: { useNewUrlParser: true, useUnifiedTopology: true },
file: (req, file) => {
return {
bucketName: "xyz",
filename: `${file.originalname}`
};
}
});
const viewPage = (req, res) => {
try {
var uploadFile = multer({ storage: storage }).single("file");
uploadFile(req, res, function(err) {
if (req.file == undefined) {
return res.send(`You must select a file.`);
}
/* code to save anthother Schema */
fileDetails.save(function(err) {
if (err) throw err;
});
});
return res.send(`File has been uploaded.`);
} catch (error) {
console.log(error);
return res.send(`Error when trying upload image: ${error}`);
}
};
module.exports = {
getPage: viewPage
};