Как добавить новое поле, кроме свойств по умолчанию для multer-gridfs-storage
Я хотел добавить новые поля (объекты), кроме полей по умолчанию для multer-gridfs-storage, но безрезультатно, я хочу добавить следующие поля:
- Описание
- категория
- знак
Поле по умолчанию имеет что-то вроде
- _Я бы
- длина
- chunksize
- Дата загрузки
- md5
- Тип содержимого
вместо этого хочу добавить что-то вроде
- _Я бы
- длина
- chunksize
- Дата загрузки
- md5
- Тип содержимого
- описание
- категория и отдых
А также есть способ добавить миниатюру в файл, чтобы у меня не было ссылки на мой идентификатор файла для миниатюры в другой коллекции
const storage = new GridFsStorage({
url: config.db,
file: (req, file) => {
return new Promise((resolve, reject) => {
const filename = req.body.fileName + path.extname(file.originalname);
const Description = req.body.Description
const fileInfo = {
filename: filename,
bucketName: 'contents',
metadata: req.body,
}
resolve(fileInfo, Description);
});
}
});
const upload = multer({
storage
});
router.get('/', (req, res) => {
res.render('index');
console.log(req.body)
});
//** uploading file to the db */
router.post('/', upload.any(), (req, res) => {
res.redirect('/upload/files')
});
1 ответ
Эти свойства заполняются multer и дополнительно расширяются тем механизмом хранилища, который вы используете, в данном случае multer-gridfs-storage при сохранении файла. Вы не сможете манипулировать ими самостоятельно, потому что они генерируются, когда файл анализируется в запросе, а затем, когда он сохраняется в базе данных.
Вместо того, чтобы использовать метаданные для хранения вашей бизнес-логики, вы должны использовать такую среду, как mongoose, и хранить эту информацию в коллекции, а также использовать поле id для получения ссылки на ваш файл. Что-то вроде этого
const Movie = mongoose.model('Movie', {
description: String,
category: String,
token: String,
fileId: Schema.Types.ObjectId
});
Прочитайте ваши поля из тела и сохраните их, используя эту коллекцию, в базу данных и используйте автоматически сгенерированные _id
вашего файла в качестве fileId
, Таким образом, вы можете легко запрашивать ваши данные и при этом иметь доступ к доступному файлу.