salut tout le monde, petite remarque concernant bodyparser. Celui-ci est maintenant intégré à express. Donc à la place d'appeler body on appelle directement express. Merci pour la vidéo. Moi qui commence le back c'est très utile. Beaucoup d'info à retenir, mais malgré l'erreur de montage, tout reste clair.
@Vivie_NFT voir la dernière partie de vidéo, àpartir de 04:28:10 jusqu'à la fin de la vidéo, ajouter l'objet corsOrtions comme ça app.use(cors(corsOptions)), l'objet corsOptions contient les paramètres, parmi ces paramètres il y a origin: process.env.CLIENT_URL, c'est-à-dire qu'on ne peut jamais faire des requetes seulement à partir du client licalhost:3000
[coquille dans l'assemblage de vidéos] Salut From Scratch, je reprend cette vidéo pour créer le projet, mais il y à un désordre dans l'assemblage de la vidéo qu'il n'y avait pas avant. par exemple, à la minute 16:11 vous êtes de retour sur MongoDB, alors qu'on l'a pas encore installé, on l'installe à la minute 25:44. Ensuite à 29:55 Vous avez deja un dossier models avec un fichier user qui contient le useSchema, mais le dossier est créer à 47:36 donc c'est pas simple de revenir en arrière pour suivre. Pour le moment j'en suis à la route du user et il y a aussi un mix des étapes 😅 J'espère que vous allez avoir le temps de gérer l'ordre car c'est trop difficile de suivre 😅
tu l'as regardé dans quel ordre du coup à peu près? C'est un peu la merde pour suivre, ça me renvoie err :{} dans postman après l'importation de bodyParser (que j'ai bien remplacé par express)
Je me suis noté les moments de coquille, pour pouvoir revenir dessus au moment voulu. Mais c’est pas évident. De plus,le projet est sympa mais il commence a dater il vaut mieux regarder des vidéos qui on moins de deux mois
merci beaucoup pour cette formation vous expliquez avec simplicité les choses et aussi vous êtes franc sur vos propos ce qui donne l'envie de vous suivre et de se former a vos côtés car vous donnez l'envie et le goût d'aimé la programmation. au fait j'ai beaucoup appris a vos cotés sur la construction d'une api avec nodejs car j'ai eu a rencontré quelque difficultés que j'ai pus résoudre c'étais vraiment un réelle défi pour moi et de plus vos propos montre que pour être un bon programmeur c'est le travail et surtouts pratiqué a travers des projets et d'être le plus simple possible. encore mille merci a vous pour cette formation vous êtes vraiment humble dans vos propos!!!!!
Excellente video,. Pour ceux qui hesitent le cours payant de from scratch est au top, j'ai appris en 3 mois a creer une app sympa ! Julien a un vrai don pour expliquer les choses et pour faire en sorte qu'elle ne soit pas abstraite. Et ca va a un rythme qui permet de suivre ! C'est parti pour revoir toutes tes videos. Merci pour tout
Encore une super vidéo, très instructive... J' adore ta philosophie de partage et ta façon d' expliquer, tu est vraiment très doué pour faire comprendre les choses tout en restant humble et drôle, c' est très motivant et inspirant, merci pour ton altruisme... Tu est un super prof et ta chaine est vraiment ma préféré même si celle du designer du web et de grafikar sont très bien aussi, mais ta méthode et ta pédagogie me sont plus adapté... Tu prend vraiment le temps d' expliquer et toujours avec des projets concret c' est top, bravo... Longue vie a ta chaine, en te souhaitant toute la réussite que tu mérite... c' est toujours un plaisir de te retrouver... a la prochaine vidéo :)
3 роки тому+3
Merci beaucoup pour ce message, vraiment cool de lire ce genre de choses ^^
Un grand merci a toi pour cet énorme travail je viens de terminer mon back j'ai eu quelques soucis de dépréciation mais dans l'ensemble tout c'est bien passer. Tu fais preuve de beaucoup de pédagogie et tes explications sont très claires, bravo continue ton travail incroyable. Je peux te fournir une version fonctionnelle à jour et commentée si tu souhaites mettre à jour les fichiers pour ceux qui veulent actuellement réaliser ce super tuto.
Рік тому+1
Franchement si t'as un repo avec une version actualisée pour 2023 je veux bien l'avoir ça pourrait aider énormément de monde
Franchement c'est assez bluffant cette vidéo. C'est normalement assez compliqué tout ceci (...) mais tu présentes ça tellement de façon simple et appréhendable ... qu'on décroche pas genre pour un motif de fatigue ;-)
encore un grand merci pour ce que tu fait ! j'ai regarder 3 x ta vidéo sur le front de 9h ......... XD et 3-4 fois celle-ci pour le back, sans parlé de toute les autres video xD je suis un débutant mais vraiment motiver et ça fait deux mois que je bosse de 10 à 16h par jours, juste avec des vidéos et des projets que je m'amuse a créer pour mettre en pratique. a chaque fois que je bloque sur un truc, je fait mes recherche sur stackoverflow ou sur des docs comme dev.mozilla ect ... mais quand j'ai besoin de revenir sur des notions, je reviens sur tes vidéos. ta chaînes et tellement bien organiser que maintenant je sais exactement où cherche dans tes vidéos quand je veut revoir tel ou tel notions. un grand respect !
Et du coup ? tu te sens à l'aise ou tu penses qu'il y a bcp de travail pour vraiment se sentir à l'aise. Pas facile ces nouvelles façons de développer. J'ai connu pendant toutes ses années html + css + jquery ;-)
@@mwlulud2995 Salut. Je développe surtout en React Native de nos jours. Et c'est une difficulté au dessus de React à mon sens. Donc quand je regarde la vidéo en accélérée je trouve ça super simple le concept de BackEnd. Tout me parle et me revient (...) Mais on est plus à une époque ou on mémorise par cœur ... mais plutôt être capable de rassembler les choses qu'on a connu. C'est comme si j'avais vu un film y a qq mois, et c'est plus aussi clair à raconter mais je me souviens du principal. Avec ChatGPT maintenant, c'est des autres manières de travailler et c'est totalement la bonne interconnexion.
Je me souviens de vos débuts pendant le confinement. Nous étions que 8 abonnés. Et là ça y est. Tes contenus répondent en temps réel avec mes recherches. Merci Scratch
4 роки тому+1
Merci à toi Genesis je me rappelle très bien de cette époque et de tes commentaires déjà très motivants ^^
Un grand merci pour ton travail ! Je prend du plaisir a faire ce projet en même temps que cette vidéo. Même si elle date de 3 ans. Cette une très bonne façon d'apprendre nodeJS. On ne s'ennuie pas , et tu as de l'humour dans tes explications , bravo ! Oui j'aurais pu copier ... Mais j'adore taper, c'est ma grande passion !!! (Excellent !)
11 місяців тому
Content que ce vieux tuto puisse encore rendre service :)
ho que oui j'en ai appris, après la théorie ce projets a démystifier bcps de notions, puis c'est cool de voir ta méthodologie en direct merci bcps et bonne année !!!!
super tuto sur le back avec quelque recherche a faire Pour tous ceux qui on des bug image a la fin essayez avec insomnia plutot que postman vous serez surpris de voir que sa fonctionne
@Vivie_NFT Regarde si tu as l'autorisation, j'ai eu ce problème et je viens de le corriger. Si tu utilises Postman sur navagiteur > clique sur la roue qui se situe en haut à droite (à côté de la cloche) / settings / scroll jusqu'à "Working directory" / location / met en ON "Allow reading files outside working directory"
Salut, fraichement sorti de formation pour moi, basée sur react/node, ce énorme projet tombe à pic ! Bon, ca va représenter un sacré défi d'aller jusqu'au bout de ces vidéos, mais un grand merci pour l'énorme masse d'XP que ça représente
Vidéo très intéressante remarques : 1 !ObjectID ou !ObjectId peut importe, mais il faut être consistant au niveau des déclarations : "const ObjectId = require("mongoose").Types.ObjectId;" 2 remove "depreciated" à remplacer par deleteOne
C'est un travail excellent ! j'ai l'impression qu'il y'a beacoup de mise à jour concernant les package. ça deux jours je galère sur mon test de post sur posman. Finalement, je l'ai laissé pour continuer le reste de la video en espérant qu'il va apporter des explications sur ce point. Merci Scratch
Bonjour: super vidéo c'est très bien expliqué j'ai compris des choses que j'avais pas compris dans d'autres tuto - Merci. REMARQUE sur Mongo DB Atlas par défaut la table est toujours créé au pluriel, sinon on peu le préciser en troisème paramètres dans le model const User = mongoose.model('User', UserSchema, 'users');
Cette vidéo me donne un gout amer en bouche car de prime abord elle semble parfaite car elle nous permet de crée un réseau social de bout en bout, mais une fois celui-ci commencer on se rend compte qu'il y a quelque problèmes: - Il y a des fautes de frappes dans le code (.jsos au lieu de json) qui sont aussi présente dans le git hub du projet . -Dans le .db du a une maj de mongoose il faudra juste écrire useNewUrlParser : true et useUnifiedTopology: true sans mettre les deux autre vue dans le tuto . - Durant le montage de la vidéo ( vers les 40 min) il y a deux parties inversées. -Plus grave sur le patch pour le follow/unfollow malgré un cc du code trouvé sur le git du projet celui-ci ne fonctionne pas. Pour ma part je n'ai pas pue continuer a réaliser ce projet passer les 2H de tuto car plus rien ne fonctionné. En conclusion je dirais que ce tuto mériterai une mise à jour afin d’être une exo parfait pour apprendre le MERN
Être développeur c'est pas simplement suivre les derniers tuto avec les technos et librairies à jour. Certes, c'est plus chiant de suivre ce genre de mini formation mais c'est ce qui t'apprend beaucoup plus en réalité. J'ai suivi parfaitement cette vidéo sans réel problème, même si je connaissais pas vraiment NodeJS et MongoDB. La débrouillardise est une grande qualité à acquérir lorsque l'on veut devenir développeur. Une autre qualité importante, la persévérance. Reculer face à un problème, même si il arrache les cheveux pour un point virgule, une faute de frappe, ou autre c'est en faisant énormément d'erreur que tu n'en feras presque plus et que tu comprendras beaucoup plus la programmation. A mon sens, je préfère des vidéos comme ça qui nous laisse de mauvaise surprise, plutôt qu'un projet ou on peut recopier sans réfléchir parce qu'il y a aucune erreur. C'est bien plus formateur. Le problème des projets parfait ou tout se passe bien, c'est qu'en réalité, ça devient de la théorie. La vrai pratique commence quand tu résous les erreurs, les tiennes, les siennes ou celles causé par les mise à jours.
@@thibaultberthelin2303 Je suis totalement d'accord. J'ai eu beaucoup de problèmes, car je n'avais jamais utilisé le MERN mais finalement, j'ai tout réglé par moi-même ou bien en recherchant sur google.
merci encore pour cette vidéo. pour ma part j'ai rencontré pleins de problèmes, notamment su les updates , mais je les ai réglés en rajoutant clone() , que je ne comprend pas encore. je ne sais pas si c'est a cause de cela que mes commentaires se dupliquent quand je les crées. si quelqu'un peut m'aider dans ce sens, ca me ferai vraiment plaisir.. continuez avec ce style de vidéo, grace à vous j'apprends beaucoup ! en route pour la partie front !! haha
Vraiment un grand merci !!! Si j arrive a vraiment créer mon réseau social grâce a cela je vous promet une part des revenus ! Vraiment un grand merci ❤
Super projet, merci beaucoup pour ton partage:-) hâte de passer au front et de faire d'autres projets! tes explications sont claires c'est vraiment top Merci encore
Eh bien voilà exactement ce que je comptait faire lorsque j'ai entrepris de me former assidûment aux Dev Web en quittant ma boîte il y a 1 an !!! Merci pour cette vidéo !!
avec cette façon d'expliquer trés claire et sans blabla , je vous suggére vraiment d'investir votre temps là dessus et surtout sur de long projets live comme celui çi où il est impossible de ne pas comprendre ou de ne pas apprendre ; (si vous pouvez faire un projet avec du html css js pour le front et du php en backend ça serait bienvenu aussi !) merci infiniment et bonne continuation
Coucou! La base de données MongoDB est fractionnée en collections : le nom de la collection est défini par défaut sur le pluriel du nom du modèle, c'est pour ca que tu avais 'users' dans la bd
43:55, la collection "users" n'ayant pas été créée dans la BD "mern-project", MongoDB l'a créé automatiquement lors de l'enregistrement, en fonction des informations contenues dans le model qui lui a été envoyé. Merci bien pour le partage.
Great job bro! It is very clear and fluid! I am on the way to follow you the next episode (Client side of this project--- 9h lol) You did it! Thanks a lot
Concernant le "s" ajouté à la fin des tables, c'est inhérent à Mongoose. On peut cependant le forcer à prendre le nom de la table en ajoutant ceci au Schema: var dataSchema = new Schema({..}, { collection: 'data' }) Si je me souviens bien, Laravel fait le même genre de choses sur des db sql.
Très bon cours, j'ai appris énormément de choses sur le développement web en peu de temps. Cependant le fait que le projet ne soit pas à jour m'a un peu posé problème pour multer, ce qui a fait que j'ai dû réécrire l'application en ESM et non en commonjs. Mis à part ça, j'entame de suite la partie front-end, celle que je maitrise le moins
Salut, tout d'abord, un grand merci pour tous tes tutos! En suivant tes vidéos j'apprends plus vite qu'en suivant d'autres cours!! Alors merci et surtout n'arrêtes jamais!;) Pb résolved..ma box!!;)
Salut Mec, franchement t'es un tueur à rendre des vidéos de qualité tu explique très bien j'ai absolument rien à dire juste une chose qui change j'utilise sequelize sinon y'a pas grand chose qui change 😉
Bonjour et tout d'abord merci pour cette superbe video, toutes fois il faudrait songer a revoir la validation des ID avec mongoose.Types.ObjectId car ce nest pas suffisent pour confirmer l'existence d'un ID il sert just a valider son format, donc meme si on prends un ID qui n'as jamais existé dans notre base de donnée et qu'on test avec la fonction .isValid() nous retournera un résultat positif donc faites attention, cordialement.
Concernant le user au pluriel, effectivement, mongodb enregistre le nom de la collection au pluriel. user >> users, coucou >> coucous mais person >>> people. Il y a un dictionnaire derrière. Merci et félicitation pour votre chaine bien variée et promettante.
Pour forcer mongodb à garder le nom de la collection choisi tel quel, il faut ajouter collection: "NOM_DE_LA_COLLECTION" dans l'objet du second argument de new mongoose.Schema()
Salut FS, super projet Je me demandais pourquoi stocker les images de profil coté client ? Je demande ça pck multer fait des siennes et les images coté client ne s'upload plus. Aussi ce serait sympa que tu crées un Discord, ça simplifierait la tâche car on est bcp à rencontrer de nouvelles erreurs et on pourrait s'entraider
Bonjour, j'ai suivi ton tutorial très intéressant et merci beaucoup ! 🥰 Mais j'ai plusieurs questions car je suis curieuse ! 😁 - Pourquoi les modèles ont des majuscules au début (par exemple const UserModel = import...) alors que c'est userController, etc. ? - Pourquoi parfois les erreurs en console.log(), parfois en res.send(), et parfois en res.json() ? - Dans le même genre, parfois tu fais juste un res.send(docs), sans préciser de status, c'est normal ? Pourquoi ? - Pour récupérer tous les utilisateurs, tu fais : const users = await userModel.find().select('-password') puis renvoyé en res.json() ; mais pour lire les posts tu fais : postModel.find avec fonction flechée... Pourquoi c'est codé différemment alors que ça fait la même chose ? - Pareil pour créer un utilisateur, c'est : const user = await userModel.create({ pseudo, email, password }) alors que pour créer un post on fait un new postModel puis un save() ? - D'ailleurs, pourquoi la récupération des utilisateurs est en async et pas la récupération des posts ? - Pourquoi l'update d'un utilisateur est async et l'update d'un post ne l'est pas ? (en plus il y a un try catch dans un cas et pas dans l'autre) - Pourquoi que des méthodes PATCH pour les commentaires ? Et pas POST pour ajouter et DELETE pour supprimer ? Est-ce qu'on choisi la méthode par rapport à ce qu'il se passe sur MongoDB et non l'action de créer/éditer/supprimer elle-même ? Merci d'avance. 😋
Bonjour, je me permets de te répondre à qlqs unes des tes interrogations. Il utilise des méthodes différentes dans la gestion de ses routes (put/post/get/etc...) dans la logique, pour récupérer des informations depuis la base tu fais un GET, envoyé des infos POST, update PUT etc... Mais rien ne t'empêche de tt faire en POST et GET par exemple. Faut juste que tu gères ça côté front et back. Ensuite au niveau des réponses, c'est en fonction de ce que tu dois en faire pareil pr les erreurs. Si c'est des éléments que tu dois afficher en front ou non. Donc res.send ou res.json peu importe, faut juste savoir comment récupérer ça en front. Mais c'est sûr qu'il faut être consistant dans son code.
Pour les majuscules, simple convention d'écriture, une classe commence par une majuscule et une fonction par une minuscule ! mais en soit tout fonctionne
Superbe Vidéo ! Par contre petit erreur de montage non ? la partie models démarre à 48 min et au début de la partie CrudUser à 30 min elle est déjà présente ?
4 роки тому+2
T'as raison j'ai inversé 2 bouts de vidéos, mais il ne manque rien en terme de contenu et les 2 bouts sont indépendants l'un de l'autre 😅
@from scratch Merci beaucoup pour toutes les vidéos que tu partage particulièrement ce projet MERN. Je suis dans l'apprentissage pour être développeur, grâce à ton contenu je progresse Merci
Pourquoi post.controller utilise moins des methodes async/await que user.controller qui utilise des callback? en particulier avec les .findBy... etc Conséquences en terme de performances et/ou gestion des erreurs ?
Okkay, j'ai regardé un peu... C'est vraiment un projet basique. C'est excellent pour apprendre mais dans le monde réel... ce genre de structure de donnée ne va pas aller très loin. Merci pour cette vidéo !
3 роки тому+1
Je t'en pris n'hésites pas à développer ou m'orienter vers du contenu, je ne suis pas développeur Back mais je ne demande qu'à apprendre
@@thepickicool97 Peut tu expliqué pourquoi ce n'est pas scalable? J'arrive pas a suivre ta logique sur ce point de vue en regardant et pratiquant le tutoriel j'ai l'impression qu'au contraire mongoDB est très souple et permissifs au niveau de la gestion des données mais en aucun cas qu'il y a une taille limite a ces données, si ce n'est bien sur la limite de la taille du au plan free pour héberger la base de donnés. Pour les commentaires ils sont stockées dans les datas de la base de donnée pas vraiment par la taille de document : const newPost = new postModel({ posterId: req.body.posterId, message: req.body.message, picture: req.file !== null ? "./uploads/posts/" + fileName : "", video: req.body.video, likers: [], comments: [], }); avec : comments: { commenterId: req.body.commenterId, commenterPseudo: req.body.commenterPseudo, text: req.body.text, timestamp: new Date().getTime(), }, schémas étant : comments: { type: [ { commenterId:String, commenterPseudo: String, text: String, timestamp: Number, } ], Donc en soit le nombre est assez indépendant car les posts contiennent dans la database mongoDB une liste de commentaire possédantt chacun un contenu, commenterId, commentaierPseudo, date de création, date d'update : ua-cam.com/video/SUPDFHuvhRc/v-deo.html Donc pour moi tu as bien une liste de commentaire stockés dans les post comme sur la vidéo, a priori y a rien qui limite la taille de commentaire dans la base de données si ce n'est la taille de la base de donné en free. Après il y a pipeline là il me semble que c'est utilisé pour les images en réalité donc rien avoir avec le nombre de commentaire. J'ai pas finis le tuto je suis parti authentification et je le fais a mon rythme en regardant et essayant de comprendre donc ajout de commentaire, écrire moi même, changer les choses qui se sont déprécié etc... Là je suis parti auth donc pas encore parti commentaire. Si j'ai une remarque a faire sur le tuto c'est que c'est dommage je trouve que tu n'explique pas ton modèle avec des schémas au début et les différentes requetes etc que tu feras par la suite et pourquoi. Car par moment c'est assez dur de vraiment suivre en tant que novice quand il faut jongler sur 2 ou 3 fichier a écrire en même temps pour faire fonctionné la chose quand on a pas la vu global de ce que l'on veut faire. En sois ça ralenti juste ma compréhension car je veut vraiment savoir pourquoi si et ça et ce que ça apportera pour le front end. Ceci dit en prenant un peu le temps et en repassant des bouts de vidéos plusieurs fois j'arrive a m'en sortir et a progressé et petit a petit je trouve que ça deviens vraiment simple et c'est top. Je me rend compte d'a quelle point cette combinaison de framework est puissante franchement... Tutoriel au top du top :) merci énormément From scratch car j'avais jamais fais de devs web et en suivant ce tutoriel j'ai vraiment l'impression d'apprendre énormément en la matière et de manière efficace, concrète. Même si je sais que ce que je dis est réducteur pour le developpement web ce tutoriel couvre a mon sens une petite partie du devs web mais petite partie qui représente 90% de ce qui est réellement utilisé. Bref auth, api, requete, organiser sa data, le site, blabla et la mise en page dynamique etc... même un peu la sécu et quelque bonne pratique... Mis a part le manque pour l'utilisation de service pour vendre bah il manque limite rien. Avec ce tutoriel et en adaptant la logique de ce dernier on peut réalisé énormément de projet je pense c'est le ressenti que j'en ai. J'ai une bien meilleur vue des libs utilisé pour dev web désormais rien qu'avec ce projet et je te remerci énormément. Bref et PS : j'aime bien le fait que mongoDB soit aussi simple et permissif quand je vois la facilité a build ce genre de projet en noSQL vs des projets basé sur du SQL pure qui sont très stricte et qui faut vraiment bien définir au départ pour pas faire de connerie bah je trouve cette flexibilité très pratique. Pour la culture je vais surement chercher un projet pour pratiquer via du SQL pure mais franchement j'ai l'impression après cette vidéo que c'est pas pratique et compliqué pour très peu de gain de performance a une époque ou les perfs sont déjà bonne via mongoDB. Si c'était vraiment question de perf les sites web serait codé en C/C++ et pas en java / javascript / python actuellement. Du coup je perd beaucoup d'intérêt dans le SQL quand je vois cette vidéo. Un peu comme je perd mon intéressement envers XML apres avoir découvert json. Pourtant XML a bien des intérêts pour lui vis a vis de json et vice versa bien sur.
3 роки тому
Merci pour ton message, si tu trouves que ça allait trop vite par moment c'est parce que j'ai fait une vidéo où j'introduisais comment créer une API avec Nodejs (j'en parle un peu), après à force de répéter les memes logiques je pense qu'on finit quand meme par assimiler les grands principes. Et je te rejoins sur la structure en noSQL, elle est totalement permissive mais aussi totalement scalable (dans les limites de l'hébergeur), c'est pour ça que j'aimerais bien que notre ami @Pickicool nous en dise un peu plus pour avoir une architecture robuste
Salut ! Tout d'abord merci beaucoup pour cette série de vidéo ! Néanmoins je voulais savoir pourquoi est-ce que vous ne traitez pas la partie tchat/conversation avec d'autres utilisateurs ?
Hello tout le monde, merci pour la vidéo :) cependant j'ai le même problème avec le statics.login qui n'est pas reconnu. J'ai le code similaire à FromScratch et je ne vois pas comment résoudre le problème. Je ne peux donc pas me connecter. Lorsque je lance l'appel vers login j'ai un { "err": {} } qui apparait si je laisse juste la res.status(200) j'ai bien ce retour. Quelqu'un pour m'éclaircir le problème svp ? Merci.
salut merci pour la vidéo. je suis entrain de me former en node.js et je suis ravis d'être tombé sur ta chaine. par contre j'ai un peut souci en faisant le test avec postman j suis tombé sur cette erreur "err": { "ok": 0, "code": 8000, "codeName": "AtlasError", "name": "MongoError" } pouvez vous m'aider s'il vous plait car les informations ne s'enregistrent pas dans ma base de données MongoDb j n sais pas continuer en tout cas pourtant la console console.log(req.body); me donne bien de résultat chaque fois que je clic sur SEND de postman. merci de pouvoir m'aidé.
Hello tout le monde, je travaille avec node v18.15.0 et ça à été compliqué pendant 10 jours d'adapter ce super projet. Je me faisais une joie de commencer le deuxième tuto sur le côté Front-end lorsque MULTER et ses multiples erreurs à vous arracher les cheveux s'est pointé vers 4h09.. et j'ai passé 5 jours à finalement ne rien pouvoir faire + 3jours à bosser avec Chatgpt qui ne trouve aucune solution qui m'a fait installer des tonnes de trucs supplémentaires et refaire des lignes de code.... Finalement toujours MULTER et ses erreurs... rien à faire, même la version 2.0.0rc.1 me fait tout planter donc c'est dommage car c'est une partie importante "le téléchargement d'images" Sinon un super Taf et un super formateur, un magnifique tuto! dommage que l'informatique web change aussi vite en si peu de temps.. Merci From Scratch !!!
Salut je sais pas si tu pourras m'aider vu que tu as pu surmonter tes difficultés.moi mon problème c'est que dans le user.controller plus précisément dans le module.export.follow j'ai récupéré intégralement le code sur github mais lorsque je fais ma requête postman je suis toujours renvoyé dans le catch (err) pour une raison que j'ignore
Seconde info, lors de la création des controllers. "module.exports.nomDeConstante" n'est plus utile, le simple fait d'écrire "exports.nomDeConstante" suffit à ce que express comprenne ce qu'il doit faire. Ce n'est pas très grave, mais je trouve que ça clarifie la fonction.
3 роки тому+1
Le code devient vite obselète j'ai l'impression ! Heureusement que le vieux JS est toujours supporté
Salut, la video est top ! Toutefois j'ai quelques problèmes de compatibilité. Te souviendrais tu de la version de Node que tu utilisais ? Dans tous les cas, merci pour tes contenus
Plusieurs petit problèmes dans le tutoriel, premièrement dans la partie qui check l'authentification ce n'est pas du tout un bon procédé de pas renvoyer de résultat dans "res" dans le cas où un token existe pas. Ensuite ObjectID.IsValid ne vérifie absolument pas si un ID existe dans la DB mais uniquement son format.
Est-ce que ce tutoriel est toujours d'actualité ? J'ai entendu dire que les tutoriels de plus de deux ans peuvent être dépassés, car les méthodes de codage évoluent rapidement. Pouvez-vous me le confirmer ? C'est le seul tutoriel en français de qualité sur le MERN de A à Z que j'ai trouvé.
Salut! je viens de découvrir ce fabuleux tuto! j'ai regarder la première heure de la première partie puis j'ai fais pause pour passé sur la deuxième avant de revenir sur celle-ci et je me rend compte que la phase de " publication " est absente. Va-t'il y avoir une partie 3 ? Une fois que nous avons personnalisé un peu le réseau social, comment le mettre en ligne ? va-t'elle devenir une application ou un site web ? Et si on voulait les deux ? Je crois que cette étape peut-être très intéressante peut-être ? Merci pour le boulot en tout cas, c'est du propre !
Salut ! Le projet est vraiment cool quand on veux apprendre et les explications son clair Malheureusement, la partie d'upload de vidéo ne fonctionne pas de mon côté, j'ai pourtant la même version et le même code, mais une erreur est présente, et mes recherches sur celle ci n'est pas concluante. Merci pour ces projets, continuer !
2 роки тому
Malheureusement 50% des trucs sont dépréciés et je manque de pratique en back.. :(
Bonjour Loïc Miramon, est-ce que tu peux juste m'expliquer comment résoudre le problème avec le login, spécialement dans userSchema.statics.login.....?
Bonsoir Bravo ! Mais une question m'envahit! D'où sortent le dossier "models" et le fichier "user.model.js" à la 30e minute? Les deux apparaissent comme par magie dans la séquence!
Salut, merci beaucoup pour le tuto c'est génial, ça m'a aidé énormément pour mon pfe !! mais j'ai pas compris comment vous avez résolu l'erreur dans 04:11:07 ?? je suis bloqué à ce niveau et j'en ai vraiment trop besoin.. merci
Salut cher From Scratch merci infiniment pour ce projet qui ouvre l'esprit de mon côté j'ai tout de même un petit soucis vu que je suis le projet 3ans après.Mon problème est que malgré que j'ai récupéré intégralement la partie du code qui fait le follow et le unfollow sur github,la requête postman me renvoie directement vers le catch (err) pour une raison que j'ignore Svp je débute encore dans le backend et je sollicite votre expertise Cher formateur
Je me permet de remettre un commentaire, car je viens d'avancer dans la vidéo. Concernant les fonctions de gestion des erreurs , surtt celle du login, il ne faut jamais préciser qu'est ce qui ne va pas entre le login et le mot de passe dans le message d'erreur. C'est facilité la tâche à une éventuelle attaque. Privilégier un message du type "login ou mot de passe incorrect".
Salut... Très bon projet. Je m'en suis servie pour me former sur nodeJS, mongoDB, Express et React. Cependant j'ai un problème pour l'upload de fichier. Je n'arrive pas à uploader le fichier dans le dossier client/public/uploads/profil. Pourrais-je avoir de l'aide...? Merci
Franchement j'ai rien à dire sur le contenu, c est super comment tu explique les choses, je comprends tout aussi (j ai lu les com) Juste un truc que je comprends pas : pourquoi tu n'utilises pas l'autosave :D
Bonjour et merci pour votre tuto...J'ai ce retour lorsque j'essaye de faire la requête update sur postman : { "message": {} } comment je peut résoudre cela s'il vous plait?
Bonjour, j'ai un problème avec le port 5000. Il fait une errer. Si je mêts un 6000 ça fonctionne. Cela posera problème pour l'application ? Par contre j'ai une erreur au niveau du run après avoir ajouter le fichier db au server.js. Là voici: const utf8Encoder = new TextEncoder(); ^ ReferenceError: TextEncoder is not defined J'ai cherché mais j'ai pas trouvé quelque chose de concluant. Merci.
Super vidéo et très bien expliqué :) Par contre j'ai un petit problème dans la vérification d'email, le vérification du pseudo pour le signUp fonctionne quand il y a un pseudo déjà pris ca m'affiche l'erreur mais pour le mail ca m'affiche pas d'erreur et je peux enregistrer plusieurs compte avec la même adresse mail. le "unique: true" est bien dans mon modèle pourtant je vois pas d'ou vient mon erreur. merci d'avance pour vos réponses :)
Très bonne vidéo. Bravo à toi ! Cela m'aide beaucoup pour mon apprentissage au backend. Petite question : Est-ce que ce "tuto" peut s'accommoder avec du VueJS à la place de REACT sur la partie front ? :)
3 роки тому+1
Bonjour, oui totalement, le Front et le back sont totalement indépendants donc peut choisir la techo que tu veux pour l'interface
Est ce que quelque chose à changer par rapport à validator ? J'ai débuguer pendant une heure avant de comprendre qu'on ne peut pas importer isEmail direction depuis validator. La seule solution que j'ai trouvé pour le moment est d'importer tout le validator ( ce n'est peut être pas optimal ... ) Il s'agit de mon premier project MERN et je m'amuse à le ES6isé en même temps ( ce n'est pas de tout repos :D )
Bonjour, j'ai un petit soucis pour l'upload d'image. Mes fichiers fonctionnent car ils ont été testé par un collègue. Mais j'ai toujours une erreur Multer persistante. Impossible de déterminer la cause malgrés toute la doc... "MulterError: Unexpected file field" et l'erreur est beaucoup plus conséquente.
Salut,merci pour le contenu qui est super clair ,mais est ce que tu peut nous dire comment on fait pour multer 2.0.0 ,car il n'est pas compatible avec la version 16 de Node stp ?
salut tout le monde, petite remarque concernant bodyparser. Celui-ci est maintenant intégré à express. Donc à la place d'appeler body on appelle directement express.
Merci pour la vidéo. Moi qui commence le back c'est très utile. Beaucoup d'info à retenir, mais malgré l'erreur de montage, tout reste clair.
app.use(express.json()) a réglé mon problème.
Merci
@@abdelkaderaitassou5995 test
test
test
@Vivie_NFT voir la dernière partie de vidéo, àpartir de 04:28:10 jusqu'à la fin de la vidéo, ajouter l'objet corsOrtions comme ça app.use(cors(corsOptions)), l'objet corsOptions contient les paramètres, parmi ces paramètres il y a origin: process.env.CLIENT_URL, c'est-à-dire qu'on ne peut jamais faire des requetes seulement à partir du client licalhost:3000
[coquille dans l'assemblage de vidéos] Salut From Scratch, je reprend cette vidéo pour créer le projet, mais il y à un désordre dans l'assemblage de la vidéo qu'il n'y avait pas avant. par exemple, à la minute 16:11 vous êtes de retour sur MongoDB, alors qu'on l'a pas encore installé, on l'installe à la minute 25:44.
Ensuite à 29:55 Vous avez deja un dossier models avec un fichier user qui contient le useSchema, mais le dossier est créer à 47:36 donc c'est pas simple de revenir en arrière pour suivre.
Pour le moment j'en suis à la route du user et il y a aussi un mix des étapes 😅
J'espère que vous allez avoir le temps de gérer l'ordre car c'est trop difficile de suivre 😅
tu l'as regardé dans quel ordre du coup à peu près? C'est un peu la merde pour suivre, ça me renvoie err :{} dans postman après l'importation de bodyParser (que j'ai bien remplacé par express)
Je me suis noté les moments de coquille, pour pouvoir revenir dessus au moment voulu. Mais c’est pas évident. De plus,le projet est sympa mais il commence a dater il vaut mieux regarder des vidéos qui on moins de deux mois
@@Stefoux Tu penses qu'il y a beaucoup de changement ?
@@Stefoux ou sont elles sur votre chaine?
@@hatosenshi non ça va ça ce fait bien
super tutoriel qui m'a permis d'apprendre nodeJs avec le plus de simplicité , j'ai bien aimé vos explications et votre organisation. merci bcp
merci beaucoup pour cette formation vous expliquez avec simplicité les choses et aussi vous êtes franc sur vos propos ce qui donne l'envie de vous suivre et de se former a vos côtés car vous donnez l'envie et le goût d'aimé la programmation. au fait j'ai beaucoup appris a vos cotés sur la construction d'une api avec nodejs car j'ai eu a rencontré quelque difficultés que j'ai pus résoudre c'étais vraiment un réelle défi pour moi et de plus vos propos montre que pour être un bon programmeur c'est le travail et surtouts pratiqué a travers des projets et d'être le plus simple possible. encore mille merci a vous pour cette formation vous êtes vraiment humble dans vos propos!!!!!
Excellente video,. Pour ceux qui hesitent le cours payant de from scratch est au top, j'ai appris en 3 mois a creer une app sympa ! Julien a un vrai don pour expliquer les choses et pour faire en sorte qu'elle ne soit pas abstraite. Et ca va a un rythme qui permet de suivre ! C'est parti pour revoir toutes tes videos. Merci pour tout
Oh merci beaucoup ! 😁
Encore une super vidéo, très instructive... J' adore ta philosophie de partage et ta façon d' expliquer, tu est vraiment très doué pour faire comprendre les choses tout en restant humble et drôle, c' est très motivant et inspirant, merci pour ton altruisme... Tu est un super prof et ta chaine est vraiment ma préféré même si celle du designer du web et de grafikar sont très bien aussi, mais ta méthode et ta pédagogie me sont plus adapté... Tu prend vraiment le temps d' expliquer et toujours avec des projets concret c' est top, bravo... Longue vie a ta chaine, en te souhaitant toute la réussite que tu mérite... c' est toujours un plaisir de te retrouver... a la prochaine vidéo :)
Merci beaucoup pour ce message, vraiment cool de lire ce genre de choses ^^
Un grand merci a toi pour cet énorme travail je viens de terminer mon back j'ai eu quelques soucis de dépréciation mais dans l'ensemble tout c'est bien passer. Tu fais preuve de beaucoup de pédagogie et tes explications sont très claires, bravo continue ton travail incroyable. Je peux te fournir une version fonctionnelle à jour et commentée si tu souhaites mettre à jour les fichiers pour ceux qui veulent actuellement réaliser ce super tuto.
Franchement si t'as un repo avec une version actualisée pour 2023 je veux bien l'avoir ça pourrait aider énormément de monde
@ je t'ai add sur linkedin je pourrais te donner mon repo et te signaler deux trois petites choses
Franchement c'est assez bluffant cette vidéo.
C'est normalement assez compliqué tout ceci (...) mais tu présentes ça tellement de façon simple et appréhendable ... qu'on décroche pas genre pour un motif de fatigue ;-)
encore un grand merci pour ce que tu fait !
j'ai regarder 3 x ta vidéo sur le front de 9h ......... XD
et 3-4 fois celle-ci pour le back, sans parlé de toute les autres video xD
je suis un débutant mais vraiment motiver et ça fait deux mois que je bosse de 10 à 16h par jours, juste avec des vidéos et des projets que je m'amuse a créer pour mettre en pratique.
a chaque fois que je bloque sur un truc, je fait mes recherche sur stackoverflow ou sur des docs comme dev.mozilla ect ...
mais quand j'ai besoin de revenir sur des notions, je reviens sur tes vidéos.
ta chaînes et tellement bien organiser que maintenant je sais exactement où cherche dans tes vidéos quand je veut revoir tel ou tel notions.
un grand respect !
vivement que tu fasse des videos sur solidity avec ou sans truffle, les RPC ect ...
ou substrat, qui sais =p
Bravo pour ce contenu qualitatif, j'ai tout suivi à la lettre, tout compris, c'est parfait. Mille merci, je partage !
Et du coup ? tu te sens à l'aise ou tu penses qu'il y a bcp de travail pour vraiment se sentir à l'aise.
Pas facile ces nouvelles façons de développer. J'ai connu pendant toutes ses années html + css + jquery ;-)
@@int0therain44 Alors maintenant 1ans après tu en est où ??😏
@@mwlulud2995 Salut. Je développe surtout en React Native de nos jours. Et c'est une difficulté au dessus de React à mon sens. Donc quand je regarde la vidéo en accélérée je trouve ça super simple le concept de BackEnd. Tout me parle et me revient (...)
Mais on est plus à une époque ou on mémorise par cœur ... mais plutôt être capable de rassembler les choses qu'on a connu.
C'est comme si j'avais vu un film y a qq mois, et c'est plus aussi clair à raconter mais je me souviens du principal. Avec ChatGPT maintenant, c'est des autres manières de travailler et c'est totalement la bonne interconnexion.
Je me souviens de vos débuts pendant le confinement. Nous étions que 8 abonnés. Et là ça y est. Tes contenus répondent en temps réel avec mes recherches. Merci Scratch
Merci à toi Genesis je me rappelle très bien de cette époque et de tes commentaires déjà très motivants ^^
Un grand merci pour ton travail ! Je prend du plaisir a faire ce projet en même temps que cette vidéo. Même si elle date de 3 ans. Cette une très bonne façon d'apprendre nodeJS.
On ne s'ennuie pas , et tu as de l'humour dans tes explications , bravo !
Oui j'aurais pu copier ... Mais j'adore taper, c'est ma grande passion !!! (Excellent !)
Content que ce vieux tuto puisse encore rendre service :)
Le projet est super et il y a une réelle progression depuis quelques temps ! Du contenu hyper qualitatif =)
Un très grand merci à toi pour cette vidéo de qualité! Tout ce qu'il faut savoir pour démarrer le back. Rien à dire, c'est top!! Bravo From Scratch!
Avec plaisir 🙂
Salut, tes tutos sont vraiment bien construit et permettent vraiment de faire ca pas a pas et de comprendre ! Continu !
ho que oui j'en ai appris, après la théorie ce projets a démystifier bcps de notions, puis c'est cool de voir ta méthodologie en direct merci bcps et bonne année !!!!
super tuto sur le back avec quelque recherche a faire
Pour tous ceux qui on des bug image a la fin essayez avec insomnia plutot que postman vous serez surpris de voir que sa fonctionne
@Vivie_NFT Regarde si tu as l'autorisation, j'ai eu ce problème et je viens de le corriger.
Si tu utilises Postman sur navagiteur > clique sur la roue qui se situe en haut à droite (à côté de la cloche) / settings / scroll jusqu'à "Working directory" / location / met en ON "Allow reading files outside working directory"
Salut,
fraichement sorti de formation pour moi, basée sur react/node, ce énorme projet tombe à pic !
Bon, ca va représenter un sacré défi d'aller jusqu'au bout de ces vidéos, mais un grand merci pour l'énorme masse d'XP que ça représente
j'ai hâte de commencer ce projet il a l'aire incroyable
Vidéo très intéressante
remarques :
1 !ObjectID ou !ObjectId peut importe, mais il faut être consistant au niveau des déclarations : "const ObjectId = require("mongoose").Types.ObjectId;"
2 remove "depreciated" à remplacer par deleteOne
C'est un travail excellent ! j'ai l'impression qu'il y'a beacoup de mise à jour concernant les package. ça deux jours je galère sur mon test de post sur posman. Finalement, je l'ai laissé pour continuer le reste de la video en espérant qu'il va apporter des explications sur ce point.
Merci Scratch
Merci de prendre le temps de faire ce genre de tuto ! ❤️
Bonjour: super vidéo c'est très bien expliqué j'ai compris des choses que j'avais pas compris dans d'autres tuto - Merci.
REMARQUE sur Mongo DB Atlas
par défaut la table est toujours créé au pluriel, sinon on peu le préciser en troisème paramètres dans le model
const User = mongoose.model('User', UserSchema, 'users');
Cette vidéo me donne un gout amer en bouche car de prime abord elle semble parfaite car elle nous permet de crée un réseau social de bout en bout, mais une fois celui-ci commencer on se rend compte qu'il y a quelque problèmes:
- Il y a des fautes de frappes dans le code (.jsos au lieu de json) qui sont aussi présente dans le git hub du projet .
-Dans le .db du a une maj de mongoose il faudra juste écrire useNewUrlParser : true et useUnifiedTopology: true sans mettre les deux autre vue dans le tuto .
- Durant le montage de la vidéo ( vers les 40 min) il y a deux parties inversées.
-Plus grave sur le patch pour le follow/unfollow malgré un cc du code trouvé sur le git du projet celui-ci ne fonctionne pas.
Pour ma part je n'ai pas pue continuer a réaliser ce projet passer les 2H de tuto car plus rien ne fonctionné.
En conclusion je dirais que ce tuto mériterai une mise à jour afin d’être une exo parfait pour apprendre le MERN
Être développeur c'est pas simplement suivre les derniers tuto avec les technos et librairies à jour. Certes, c'est plus chiant de suivre ce genre de mini formation mais c'est ce qui t'apprend beaucoup plus en réalité.
J'ai suivi parfaitement cette vidéo sans réel problème, même si je connaissais pas vraiment NodeJS et MongoDB. La débrouillardise est une grande qualité à acquérir lorsque l'on veut devenir développeur. Une autre qualité importante, la persévérance. Reculer face à un problème, même si il arrache les cheveux pour un point virgule, une faute de frappe, ou autre c'est en faisant énormément d'erreur que tu n'en feras presque plus et que tu comprendras beaucoup plus la programmation.
A mon sens, je préfère des vidéos comme ça qui nous laisse de mauvaise surprise, plutôt qu'un projet ou on peut recopier sans réfléchir parce qu'il y a aucune erreur. C'est bien plus formateur.
Le problème des projets parfait ou tout se passe bien, c'est qu'en réalité, ça devient de la théorie. La vrai pratique commence quand tu résous les erreurs, les tiennes, les siennes ou celles causé par les mise à jours.
@@thibaultberthelin2303 Je suis totalement d'accord. J'ai eu beaucoup de problèmes, car je n'avais jamais utilisé le MERN mais finalement, j'ai tout réglé par moi-même ou bien en recherchant sur google.
merci encore pour cette vidéo. pour ma part j'ai rencontré pleins de problèmes, notamment su les updates , mais je les ai réglés en rajoutant clone() , que je ne comprend pas encore. je ne sais pas si c'est a cause de cela que mes commentaires se dupliquent quand je les crées. si quelqu'un peut m'aider dans ce sens, ca me ferai vraiment plaisir..
continuez avec ce style de vidéo, grace à vous j'apprends beaucoup ! en route pour la partie front !! haha
Thanks for letting everyone who doesn't know how clusters work down.
That's nice.
Merci beaucoup pour ce tuto ! Il m'a appris plein de choses surtout au niveau authentification et hashage de mots de passes où je galérais
Vraiment un grand merci !!! Si j arrive a vraiment créer mon réseau social grâce a cela je vous promet une part des revenus ! Vraiment un grand merci ❤
Super projet, merci beaucoup pour ton partage:-) hâte de passer au front et de faire d'autres projets! tes explications sont claires c'est vraiment top
Merci encore
Merci beaucoup pour ce cadeau grâce à ce tuto j'ai appris énormément je te souhaite une bonne continuation !!!
Merci à toi 😊
Eh bien voilà exactement ce que je comptait faire lorsque j'ai entrepris de me former assidûment aux Dev Web en quittant ma boîte il y a 1 an !!! Merci pour cette vidéo !!
Je t'aime... Plus sérieusement au top comme d'hab merci le s !
Ah oui carrément 😅
avec cette façon d'expliquer trés claire et sans blabla , je vous suggére vraiment d'investir votre temps là dessus et surtout sur de long projets live comme celui çi où il est impossible de ne pas comprendre ou de ne pas apprendre ; (si vous pouvez faire un projet avec du html css js pour le front et du php en backend ça serait bienvenu aussi !) merci infiniment et bonne continuation
ua-cam.com/video/bZ3SC6PvAC8/v-deo.html 😉
@ merci
Coucou!
La base de données MongoDB est fractionnée en collections : le nom de la collection est défini par défaut sur le pluriel du nom du modèle, c'est pour ca que tu avais 'users' dans la bd
43:55, la collection "users" n'ayant pas été créée dans la BD "mern-project", MongoDB l'a créé automatiquement lors de l'enregistrement, en fonction des informations contenues dans le model qui lui a été envoyé. Merci bien pour le partage.
Super merci pour ce tuto super instructif et encore d'actualité !! Moi aussi j'ai le doute qui m'habite par moment 🤣
Haha 😂
Merci beaucoup, pour ce projet comme tous ! j'aime beaucoup ta façon d'expliquer !
On aimerait voir plus de contenu aussi long chez les francophones, des gros projets !!! en FR :p
Great job bro! It is very clear and fluid! I am on the way to follow you the next episode (Client side of this project--- 9h lol)
You did it! Thanks a lot
Do you even speak french ?
@ Oui mais je ne parle pas couramment! Néanmoins ton explication est très clair et la vitess aussi c'est bien.
En grand, merci!
"Paf !" Merci pour ce contenu tu sauves ma formation et tu es d'un pédagogie sans faille !
Grosse force a toi et merci pour ta video,💪
elle m'as énormément aider pour apprehender le back end 💻
Content que ça puisse toujours aider malgré l'age de cette vidéo ^^
merci ! pour ce projet complet, j'ai bien aimé ta façon de transmettre simple et efficace, allez je go faire le front ;)
Concernant le "s" ajouté à la fin des tables, c'est inhérent à Mongoose.
On peut cependant le forcer à prendre le nom de la table en ajoutant ceci au Schema:
var dataSchema = new Schema({..}, { collection: 'data' })
Si je me souviens bien, Laravel fait le même genre de choses sur des db sql.
Très bon cours, j'ai appris énormément de choses sur le développement web en peu de temps. Cependant le fait que le projet ne soit pas à jour m'a un peu posé problème pour multer, ce qui a fait que j'ai dû réécrire l'application en ESM et non en commonjs. Mis à part ça, j'entame de suite la partie front-end, celle que je maitrise le moins
Comment as-tu convertis : require('dotenv').config({path: './config/.env'}); et
require('./config/db'); ?
Merci merci merci tuto complet et de qualité
Merci cela aide beaucoup, surtout que tu expliques ce que tu fais:)
Avec plaisir 🙂
@adam hqiaq : c'est le principe de l'informatique, comprendre ce que l'on fait! Et c'est ça le plus dur....
Super !!! Merci pour cette vidéo ! Je suis en plein apprentissage de la partie backend en node JS, etc...
Salut, tout d'abord, un grand merci pour tous tes tutos! En suivant tes vidéos j'apprends plus vite qu'en suivant d'autres cours!! Alors merci et surtout n'arrêtes jamais!;)
Pb résolved..ma box!!;)
Salut Mec, franchement t'es un tueur à rendre des vidéos de qualité tu explique très bien j'ai absolument rien à dire juste une chose qui change j'utilise sequelize sinon y'a pas grand chose qui change 😉
Bonjour et tout d'abord merci pour cette superbe video, toutes fois il faudrait songer a revoir la validation des ID avec mongoose.Types.ObjectId
car ce nest pas suffisent pour confirmer l'existence d'un ID il sert just a valider son format, donc meme si on prends un ID qui n'as jamais existé dans notre base de donnée et qu'on test avec la fonction .isValid() nous retournera un résultat positif donc faites attention, cordialement.
Cette vidéo se déprécie jour après jour 😅
@ en tout cas tres bon contenu merci beaucoup 👏👏👏
Concernant le user au pluriel, effectivement, mongodb enregistre le nom de la collection au pluriel.
user >> users, coucou >> coucous mais person >>> people. Il y a un dictionnaire derrière.
Merci et félicitation pour votre chaine bien variée et promettante.
Merci pour la précision
Pour forcer mongodb à garder le nom de la collection choisi tel quel, il faut ajouter collection: "NOM_DE_LA_COLLECTION" dans l'objet du second argument de new mongoose.Schema()
Géniale ! j'ai terminé le Back ! place au Front
bonjour merci encore pour tout grand prof.
Thanks a lot for this french tutorial. really appreciate it. Plus serieusement MERCI BCP !!!! . David
Je viens de découvrir votre chaîne... trop cool ce projet...
Salut FS, super projet
Je me demandais pourquoi stocker les images de profil coté client ?
Je demande ça pck multer fait des siennes et les images coté client ne s'upload plus.
Aussi ce serait sympa que tu crées un Discord, ça simplifierait la tâche car on est bcp à rencontrer de nouvelles erreurs et on pourrait s'entraider
Hey oui, comment faire alors ?
Bonjour, j'ai suivi ton tutorial très intéressant et merci beaucoup ! 🥰
Mais j'ai plusieurs questions car je suis curieuse ! 😁
- Pourquoi les modèles ont des majuscules au début (par exemple const UserModel = import...) alors que c'est userController, etc. ?
- Pourquoi parfois les erreurs en console.log(), parfois en res.send(), et parfois en res.json() ?
- Dans le même genre, parfois tu fais juste un res.send(docs), sans préciser de status, c'est normal ? Pourquoi ?
- Pour récupérer tous les utilisateurs, tu fais : const users = await userModel.find().select('-password') puis renvoyé en res.json() ; mais pour lire les posts tu fais : postModel.find avec fonction flechée... Pourquoi c'est codé différemment alors que ça fait la même chose ?
- Pareil pour créer un utilisateur, c'est : const user = await userModel.create({ pseudo, email, password }) alors que pour créer un post on fait un new postModel puis un save() ?
- D'ailleurs, pourquoi la récupération des utilisateurs est en async et pas la récupération des posts ?
- Pourquoi l'update d'un utilisateur est async et l'update d'un post ne l'est pas ? (en plus il y a un try catch dans un cas et pas dans l'autre)
- Pourquoi que des méthodes PATCH pour les commentaires ? Et pas POST pour ajouter et DELETE pour supprimer ? Est-ce qu'on choisi la méthode par rapport à ce qu'il se passe sur MongoDB et non l'action de créer/éditer/supprimer elle-même ?
Merci d'avance. 😋
Bonjour, je me permets de te répondre à qlqs unes des tes interrogations. Il utilise des méthodes différentes dans la gestion de ses routes (put/post/get/etc...) dans la logique, pour récupérer des informations depuis la base tu fais un GET, envoyé des infos POST, update PUT etc... Mais rien ne t'empêche de tt faire en POST et GET par exemple.
Faut juste que tu gères ça côté front et back.
Ensuite au niveau des réponses, c'est en fonction de ce que tu dois en faire pareil pr les erreurs. Si c'est des éléments que tu dois afficher en front ou non. Donc res.send ou res.json peu importe, faut juste savoir comment récupérer ça en front. Mais c'est sûr qu'il faut être consistant dans son code.
Pour les majuscules, simple convention d'écriture, une classe commence par une majuscule et une fonction par une minuscule ! mais en soit tout fonctionne
Super boulot. Encore merci a toi
merci bcp cette video il ma aidez bcp
Superbe Vidéo !
Par contre petit erreur de montage non ? la partie models démarre à 48 min et au début de la partie CrudUser à 30 min elle est déjà présente ?
T'as raison j'ai inversé 2 bouts de vidéos, mais il ne manque rien en terme de contenu et les 2 bouts sont indépendants l'un de l'autre 😅
@ Ca aide pour être sûr de bien comprendre ce qu'on fait au lieu de recopier sans réfléchir :D Super vidéo sinon :D
@from scratch Merci beaucoup pour toutes les vidéos que tu partage particulièrement ce projet MERN. Je suis dans l'apprentissage pour être développeur, grâce à ton contenu je progresse Merci
Pourquoi post.controller utilise moins des methodes async/await que user.controller qui utilise des callback? en particulier avec les .findBy... etc
Conséquences en terme de performances et/ou gestion des erreurs ?
Bonjour, merci pour cette superbe vidéo, j'ai une question, comment appliquer le CRUD à une sous-sous base de données ?
Bon, je vais écouter ce tuto, j'ai hâte de voir la structure de donnée qu'il va utiliser.
Déjà, je vois déjà un premier inconvéniant. Le nombre de commentaires sur un Post sera limité par la taille du document. Ce n'est pas très scalable.
Okkay, j'ai regardé un peu... C'est vraiment un projet basique. C'est excellent pour apprendre mais dans le monde réel... ce genre de structure de donnée ne va pas aller très loin. Merci pour cette vidéo !
Je t'en pris n'hésites pas à développer ou m'orienter vers du contenu, je ne suis pas développeur Back mais je ne demande qu'à apprendre
@@thepickicool97 Peut tu expliqué pourquoi ce n'est pas scalable? J'arrive pas a suivre ta logique sur ce point de vue en regardant et pratiquant le tutoriel j'ai l'impression qu'au contraire mongoDB est très souple et permissifs au niveau de la gestion des données mais en aucun cas qu'il y a une taille limite a ces données, si ce n'est bien sur la limite de la taille du au plan free pour héberger la base de donnés.
Pour les commentaires ils sont stockées dans les datas de la base de donnée pas vraiment par la taille de document :
const newPost = new postModel({
posterId: req.body.posterId,
message: req.body.message,
picture: req.file !== null ? "./uploads/posts/" + fileName : "",
video: req.body.video,
likers: [],
comments: [],
});
avec :
comments: {
commenterId: req.body.commenterId,
commenterPseudo: req.body.commenterPseudo,
text: req.body.text,
timestamp: new Date().getTime(),
},
schémas étant :
comments: {
type: [
{
commenterId:String,
commenterPseudo: String,
text: String,
timestamp: Number,
}
],
Donc en soit le nombre est assez indépendant car les posts contiennent dans la database mongoDB une liste de commentaire possédantt chacun un contenu, commenterId, commentaierPseudo, date de création, date d'update :
ua-cam.com/video/SUPDFHuvhRc/v-deo.html
Donc pour moi tu as bien une liste de commentaire stockés dans les post comme sur la vidéo, a priori y a rien qui limite la taille de commentaire dans la base de données si ce n'est la taille de la base de donné en free.
Après il y a pipeline là il me semble que c'est utilisé pour les images en réalité donc rien avoir avec le nombre de commentaire. J'ai pas finis le tuto je suis parti authentification et je le fais a mon rythme en regardant et essayant de comprendre donc ajout de commentaire, écrire moi même, changer les choses qui se sont déprécié etc... Là je suis parti auth donc pas encore parti commentaire.
Si j'ai une remarque a faire sur le tuto c'est que c'est dommage je trouve que tu n'explique pas ton modèle avec des schémas au début et les différentes requetes etc que tu feras par la suite et pourquoi. Car par moment c'est assez dur de vraiment suivre en tant que novice quand il faut jongler sur 2 ou 3 fichier a écrire en même temps pour faire fonctionné la chose quand on a pas la vu global de ce que l'on veut faire. En sois ça ralenti juste ma compréhension car je veut vraiment savoir pourquoi si et ça et ce que ça apportera pour le front end. Ceci dit en prenant un peu le temps et en repassant des bouts de vidéos plusieurs fois j'arrive a m'en sortir et a progressé et petit a petit je trouve que ça deviens vraiment simple et c'est top. Je me rend compte d'a quelle point cette combinaison de framework est puissante franchement... Tutoriel au top du top :) merci énormément From scratch car j'avais jamais fais de devs web et en suivant ce tutoriel j'ai vraiment l'impression d'apprendre énormément en la matière et de manière efficace, concrète. Même si je sais que ce que je dis est réducteur pour le developpement web ce tutoriel couvre a mon sens une petite partie du devs web mais petite partie qui représente 90% de ce qui est réellement utilisé. Bref auth, api, requete, organiser sa data, le site, blabla et la mise en page dynamique etc... même un peu la sécu et quelque bonne pratique... Mis a part le manque pour l'utilisation de service pour vendre bah il manque limite rien. Avec ce tutoriel et en adaptant la logique de ce dernier on peut réalisé énormément de projet je pense c'est le ressenti que j'en ai. J'ai une bien meilleur vue des libs utilisé pour dev web désormais rien qu'avec ce projet et je te remerci énormément.
Bref et PS : j'aime bien le fait que mongoDB soit aussi simple et permissif quand je vois la facilité a build ce genre de projet en noSQL vs des projets basé sur du SQL pure qui sont très stricte et qui faut vraiment bien définir au départ pour pas faire de connerie bah je trouve cette flexibilité très pratique. Pour la culture je vais surement chercher un projet pour pratiquer via du SQL pure mais franchement j'ai l'impression après cette vidéo que c'est pas pratique et compliqué pour très peu de gain de performance a une époque ou les perfs sont déjà bonne via mongoDB. Si c'était vraiment question de perf les sites web serait codé en C/C++ et pas en java / javascript / python actuellement. Du coup je perd beaucoup d'intérêt dans le SQL quand je vois cette vidéo. Un peu comme je perd mon intéressement envers XML apres avoir découvert json. Pourtant XML a bien des intérêts pour lui vis a vis de json et vice versa bien sur.
Merci pour ton message, si tu trouves que ça allait trop vite par moment c'est parce que j'ai fait une vidéo où j'introduisais comment créer une API avec Nodejs (j'en parle un peu), après à force de répéter les memes logiques je pense qu'on finit quand meme par assimiler les grands principes.
Et je te rejoins sur la structure en noSQL, elle est totalement permissive mais aussi totalement scalable (dans les limites de l'hébergeur), c'est pour ça que j'aimerais bien que notre ami @Pickicool nous en dise un peu plus pour avoir une architecture robuste
Salut ! Tout d'abord merci beaucoup pour cette série de vidéo ! Néanmoins je voulais savoir pourquoi est-ce que vous ne traitez pas la partie tchat/conversation avec d'autres utilisateurs ?
Le temps...
Bonjour.
Pourriez faire un projet avec mysql?
super tuto.
mais j'ai cette erreur moi: (node:10880) Warning: Accessing non-existent property 'findByIdAndUpdate' of module exports inside circular dependency.
pouvez-vous m'aider svp?
Hello tout le monde, merci pour la vidéo :) cependant j'ai le même problème avec le statics.login qui n'est pas reconnu. J'ai le code similaire à FromScratch et je ne vois pas comment résoudre le problème. Je ne peux donc pas me connecter. Lorsque je lance l'appel vers login j'ai un { "err": {} } qui apparait si je laisse juste la res.status(200) j'ai bien ce retour. Quelqu'un pour m'éclaircir le problème svp ? Merci.
salut merci pour la vidéo.
je suis entrain de me former en node.js et je suis ravis d'être tombé sur ta chaine.
par contre j'ai un peut souci en faisant le test avec postman j suis tombé sur cette erreur
"err": {
"ok": 0,
"code": 8000,
"codeName": "AtlasError",
"name": "MongoError"
}
pouvez vous m'aider s'il vous plait car les informations ne s'enregistrent pas dans ma base de données MongoDb j n sais pas continuer en tout cas pourtant la console console.log(req.body); me donne bien de résultat chaque fois que je clic sur SEND de postman.
merci de pouvoir m'aidé.
Hello tout le monde, je travaille avec node v18.15.0 et ça à été compliqué pendant 10 jours d'adapter ce super projet. Je me faisais une joie de commencer le deuxième tuto sur le côté Front-end lorsque MULTER et ses multiples erreurs à vous arracher les cheveux s'est pointé vers 4h09.. et j'ai passé 5 jours à finalement ne rien pouvoir faire + 3jours à bosser avec Chatgpt qui ne trouve aucune solution qui m'a fait installer des tonnes de trucs supplémentaires et refaire des lignes de code.... Finalement toujours MULTER et ses erreurs... rien à faire, même la version 2.0.0rc.1 me fait tout planter donc c'est dommage car c'est une partie importante "le téléchargement d'images" Sinon un super Taf et un super formateur, un magnifique tuto! dommage que l'informatique web change aussi vite en si peu de temps.. Merci From Scratch !!!
Merci à toi, c'est vrai que ça a bien changé 😅
Salut je sais pas si tu pourras m'aider vu que tu as pu surmonter tes difficultés.moi mon problème c'est que dans le user.controller plus précisément dans le module.export.follow j'ai récupéré intégralement le code sur github mais lorsque je fais ma requête postman je suis toujours renvoyé dans le catch (err) pour une raison que j'ignore
Merci pour ce tuto encore !! tellement enrichissant ! peut tu faire un tuto avec materialUI de react ? merci d'avance !!
Seconde info, lors de
la création des controllers. "module.exports.nomDeConstante" n'est plus utile, le simple fait d'écrire "exports.nomDeConstante" suffit à ce que express comprenne ce qu'il doit faire. Ce n'est pas très grave, mais je trouve que ça clarifie la fonction.
Le code devient vite obselète j'ai l'impression ! Heureusement que le vieux JS est toujours supporté
Salut,
la video est top ! Toutefois j'ai quelques problèmes de compatibilité. Te souviendrais tu de la version de Node que tu utilisais ?
Dans tous les cas, merci pour tes contenus
Plusieurs petit problèmes dans le tutoriel, premièrement dans la partie qui check l'authentification ce n'est pas du tout un bon procédé de pas renvoyer de résultat dans "res" dans le cas où un token existe pas. Ensuite ObjectID.IsValid ne vérifie absolument pas si un ID existe dans la DB mais uniquement son format.
@Emma ORSET je pense qu’avec mongoose le plus simple c’est de faire un .find pour chercher dans la db
Est-ce que ce tutoriel est toujours d'actualité ? J'ai entendu dire que les tutoriels de plus de deux ans peuvent être dépassés, car les méthodes de codage évoluent rapidement. Pouvez-vous me le confirmer ? C'est le seul tutoriel en français de qualité sur le MERN de A à Z que j'ai trouvé.
J'aimerais le savoir avant de commencer le tutoriel afin de ne pas perdre de temps. Merci d'avance !
Un grand Merci ! Super projet
Salut! je viens de découvrir ce fabuleux tuto! j'ai regarder la première heure de la première partie puis j'ai fais pause pour passé sur la deuxième avant de revenir sur celle-ci et je me rend compte que la phase de " publication " est absente. Va-t'il y avoir une partie 3 ? Une fois que nous avons personnalisé un peu le réseau social, comment le mettre en ligne ? va-t'elle devenir une application ou un site web ? Et si on voulait les deux ? Je crois que cette étape peut-être très intéressante peut-être ? Merci pour le boulot en tout cas, c'est du propre !
Super projet . Un grand merci ...
Salut !
Le projet est vraiment cool quand on veux apprendre et les explications son clair
Malheureusement, la partie d'upload de vidéo ne fonctionne pas de mon côté, j'ai pourtant la même version et le même code, mais une erreur est présente, et mes recherches sur celle ci n'est pas concluante.
Merci pour ces projets, continuer !
Malheureusement 50% des trucs sont dépréciés et je manque de pratique en back.. :(
Bonjour Loïc Miramon, est-ce que tu peux juste m'expliquer comment résoudre le problème avec le login, spécialement dans userSchema.statics.login.....?
Bonsoir Bravo ! Mais une question m'envahit! D'où sortent le dossier "models" et le fichier "user.model.js" à la 30e minute? Les deux apparaissent comme par magie dans la séquence!
Salut il a fait une erreur lors du montage l’explication arrive plus tard 😉
Salut, merci beaucoup pour le tuto c'est génial, ça m'a aidé énormément pour mon pfe !! mais j'ai pas compris comment vous avez résolu l'erreur dans 04:11:07 ?? je suis bloqué à ce niveau et j'en ai vraiment trop besoin.. merci
Salut c'est peut être un peu tard, mais bon ...
Il a installé une autre version de multer: la 2.0.0.1-rc.1 et ça a fonctionné.
@@samuelk582 cette version n'est pas compatible avec la dernière version du node js.
Du coup comment faire ?
J'ai buger ou j'ai une partie manquante comment on passe de notre connexion au modeles déja crée ?
Salut cher From Scratch merci infiniment pour ce projet qui ouvre l'esprit de mon côté j'ai tout de même un petit soucis vu que je suis le projet 3ans après.Mon problème est que malgré que j'ai récupéré intégralement la partie du code qui fait le follow et le unfollow sur github,la requête postman me renvoie directement vers le catch (err) pour une raison que j'ignore
Svp je débute encore dans le backend et je sollicite votre expertise Cher formateur
Je me permet de remettre un commentaire, car je viens d'avancer dans la vidéo. Concernant les fonctions de gestion des erreurs , surtt celle du login, il ne faut jamais préciser qu'est ce qui ne va pas entre le login et le mot de passe dans le message d'erreur. C'est facilité la tâche à une éventuelle attaque. Privilégier un message du type "login ou mot de passe incorrect".
C'est fou ! Je kiff ! Merci
Salut... Très bon projet. Je m'en suis servie pour me former sur nodeJS, mongoDB, Express et React.
Cependant j'ai un problème pour l'upload de fichier. Je n'arrive pas à uploader le fichier dans le dossier client/public/uploads/profil.
Pourrais-je avoir de l'aide...?
Merci
I wish i could understand french. But whatever...i think i will do this.
Franchement j'ai rien à dire sur le contenu, c est super comment tu explique les choses, je comprends tout aussi (j ai lu les com)
Juste un truc que je comprends pas : pourquoi tu n'utilises pas l'autosave :D
Bonjour et merci pour votre tuto...J'ai ce retour lorsque j'essaye de faire la requête update sur postman :
{
"message": {}
}
comment je peut résoudre cela s'il vous plait?
Bonjour, j'ai un problème avec le port 5000. Il fait une errer. Si je mêts un 6000 ça fonctionne. Cela posera problème pour l'application ? Par contre j'ai une erreur au niveau du run après avoir ajouter le fichier db au server.js. Là voici: const utf8Encoder = new TextEncoder();
^
ReferenceError: TextEncoder is not defined
J'ai cherché mais j'ai pas trouvé quelque chose de concluant.
Merci.
J’essaie de faire de même mais Mon package.json signale l’erreur dès le début svp de l’aide. Et nodemon s’écrase
Super vidéo et très bien expliqué :)
Par contre j'ai un petit problème dans la vérification d'email, le vérification du pseudo pour le signUp fonctionne quand il y a un pseudo déjà pris ca m'affiche l'erreur mais pour le mail ca m'affiche pas d'erreur et je peux enregistrer plusieurs compte avec la même adresse mail.
le "unique: true" est bien dans mon modèle pourtant je vois pas d'ou vient mon erreur.
merci d'avance pour vos réponses :)
Très bonne vidéo. Bravo à toi ! Cela m'aide beaucoup pour mon apprentissage au backend. Petite question : Est-ce que ce "tuto" peut s'accommoder avec du VueJS à la place de REACT sur la partie front ? :)
Bonjour, oui totalement, le Front et le back sont totalement indépendants donc peut choisir la techo que tu veux pour l'interface
@ top merci j'ai une question sur la meme lancée redux peut s'utiliser avec vue js ou il inhérent que à react?
Est ce que quelque chose à changer par rapport à validator ?
J'ai débuguer pendant une heure avant de comprendre qu'on ne peut pas importer isEmail direction depuis validator.
La seule solution que j'ai trouvé pour le moment est d'importer tout le validator ( ce n'est peut être pas optimal ... )
Il s'agit de mon premier project MERN et je m'amuse à le ES6isé en même temps ( ce n'est pas de tout repos :D )
Tu as déstructuré (entre accolade) ton import? Const { isEmail } = required...
Bonjour, j'ai un petit soucis pour l'upload d'image. Mes fichiers fonctionnent car ils ont été testé par un collègue. Mais j'ai toujours une erreur Multer persistante. Impossible de déterminer la cause malgrés toute la doc... "MulterError: Unexpected file field" et l'erreur est beaucoup plus conséquente.
Méthode simple pr résoudre ses erreurs en dev => copier son erreur => ouvrir son navigateur => coller son erreur ds la barre de recherche.
J'ai le même problème que toi impossible de trouver une solution ! 😔
Salut,merci pour le contenu qui est super clair ,mais est ce que tu peut nous dire comment on fait pour multer 2.0.0 ,car il n'est pas compatible avec la version 16 de Node stp ?
Pourquoi dans chaque tableau tui met un {new: true} j'ai pas compris. Vous pouvez m'expliquer ou si il explique me pointer l'endroit ou il parle !
Merci beaucoup ! :)
D’abord merci pour l´effort le tuto est génial, cependant j’ai pas compris comment tu as créé le fichier user.model.js avec ça config ?
regarde dès la 48ième minute
puis après la création du user.model.js tu reviens à la 30ième minute
Merci beaucoup pour le tuto
Pour ceux qui restent bloqué sur updateUser, vous devez rajouter ".clone();"juste au dessus du "catch(err)..."
Merci