Эта часть в вашем коде
const storage = new GridFsStorage({
url: config.db,
file: (req, file) => { // In this function is where you configure the name of your file
Конфигурация file
- это та, которая вычисляет имя файла перед вставкой файла в базу данных.Что вы делаете:
- Создание имени, например
'file'
плюс любое расширение, полученное из браузера, например: 'file.mp4'
- Сохранение файла с этим именем в базе данных
- Перезапись свойства в вашем запросе новым именем
- Файл в базе данных остается неизменным
Я думаю, что вы действительно хотели создать правильное имя перед вставкой
Это можно сделать с помощью
const storage = new GridFsStorage({
url: config.db,
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err)
}
// In here you have access to the request and also to the body object
const filename = req.body.fileName + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: 'contents'
};
resolve(fileInfo);
});
});
}});
Убедитесь, что вы отправили все поля до того, как файл из формы в вашем браузере или некоторые значения будутundefined
потому что они еще не обработаны.