Как интегрировать Multer и Multer-S3 с MongoDB?
Я решил пойти по пути S3 для хранения изображений вместо того, чтобы делать это с Gridfs. Но я все еще не понимаю, как MongoDB будет интегрироваться с Multer и S3.
Например, допустим, у меня есть коллекция документов для каждого пользователя. Предполагается, что сами документы не будут содержать фотографии профиля, которые будут загружены в мое облако S3.
Но когда я отображаю список пользователей во внешнем интерфейсе, как я могу убедиться, что для каждого пользователя отображается правильная картинка профиля?
Я просматриваю документацию по multer-s3 и замечаю, что метаданные задают имя файла, который должен быть загружен в S3 (я думаю?).
var upload = multer({
storage: multerS3({
s3: s3,
bucket: 'some-bucket',
metadata: function (req, file, cb) {
cb(null, {fieldName: file.fieldname});
},
key: function (req, file, cb) {
cb(null, Date.now().toString())
}
})
})
Я думаю, что, возможно, хорошим решением этой проблемы было бы имя каждого загружаемого файла с тем же именем, что и у пользователя, который будет его использовать. Можно ли возиться с метаданными и ключевыми функциями, чтобы они совпадали с именем пользователя, который их загружает? Что именно делает cb
делать и что представляет каждый из этих параметров?
1 ответ
Предполагая, что у вас есть имя пользователя, вы можете назвать файл, изменив ключ.
key: function (req, file, cb) {
cb(null, username + ".jpg")
}
Или вы можете поместить файлы фотографий в папку с файлами следующим образом:
key: function (req, file, cb) {
cb(null, username + "/profile.jpg")
}
Включение / позволит вам создавать и помещать изображения в папки.