2017-08-11 8 views
1

J'ai décidé d'utiliser la route S3 pour stocker des images au lieu de le faire avec Gridfs. Mais je suis toujours confus quant à la façon dont MongoDB s'intégrera avec Multer et S3. Par exemple, disons que j'ai une collection de documents pour chaque utilisateur. Par exemple, disons que j'ai une collection de documents pour chaque utilisateur. Il est supposé que les documents eux-mêmes ne contiendront pas les images de profil qui seront téléchargées sur mon nuage S3.Comment intégrer Multer et Multer-S3 avec MongoDB?

Mais lorsque j'affiche une liste d'utilisateurs dans le frontal, comment puis-je m'assurer que l'image de profil correcte est affichée pour chaque utilisateur?

Je regarde la documentation de multer-s3, et je remarque que les métadonnées définissent le nom du fichier qui doit être téléchargé vers S3 (je pense?).

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()) 
    } 
    }) 
}) 

Je pense peut-être une bonne solution à ce problème serait le nom de chaque fichier téléchargé comme le même nom que l'utilisateur qui l'utilisera. Est-ce que je peux bricoler avec les métadonnées et les fonctions clés de sorte qu'elles soient le même nom que le nom d'utilisateur de celui qui les télécharge? Que fait exactement cb et que représentent chacun de ces paramètres?

Répondre

0

En supposant que vous avez le nom d'utilisateur de l'utilisateur, vous pouvez nommer le fichier en changeant la clé.

key: function (req, file, cb) { 
     cb(null, username + ".jpg") 
} 

Ou vous pouvez placer des fichiers photo à l'intérieur d'un dossier comme celui-ci:

key: function (req, file, cb) { 
     cb(null, username + "/profile.jpg") 
} 

inclusion du/vous permettra de créer et de mettre des images dans des dossiers.