J’ai terminé l’api backend de mon application. Elle utilise expressjs et mongodb/mongoose. De tous les tests que j’ai effectués, il fait un excellent travail en faisant des requêtes post et get à mon MongoDB.
J’avais l’intention de déployer mon API backend cette semaine afin que je puisse commencer à travailler sur le front-end de mon application. Mais j’ai réalisé que j’avais besoin d’un moyen de stocker les images que l’utilisateur télécharge et pour les articles dans la base de données.
Beaucoup de gens disent que je ne devrais pas stocker les images dans ma base de données MongoDB via Gridsf. Et que je devrais utiliser Amazon S3 à la place.
Cependant, j’ai quelques préoccupations avec cette approche.
Pour mon application, le front-end et mon api backend sont dans des dépôts séparés. Et j’ai l’intention que le premier fasse une demande d’api au second en utilisant Axios afin d’afficher les données de la base de données dans mon html/CSS. Pour cette raison, je pense que l’utilisation de S3 pour stocker les images complique les choses. Par exemple, si j’avais une liste d’utilisateurs, comment puis-je être sûr que quelle image d’avatar de S3 correspond à quel utilisateur ?
J’imagine un scénario cauchemardesque où j’ai des images reçues du seau S3, mais elles ont chacune un hash aléatoire comme nom de fichier, et je ne sais pas quel fichier jpg et quel fichier document MongoDB appartiennent au même utilisateur ou au même élément. Il me semble juste que le stockage des images dans la base de données résout ce dilemme.
Dois-je aller de l’avant et simplement utiliser Gridsf ou est-ce une approche pire que de s’en tenir à multer-s3 et s3 en général ?
Y a-t-il une meilleure alternative que l’une ou l’autre ?