Req.body לא מוגדר אחרי שליחה מהפוסט מן

היי @ynonp
אני תקוע באמצע תוכנית ואשמח לעזרה.
לא משנה מה אני מנסה, כל פעם שאני מנסה לגשת לנתוני req.body אחרי ששלחתי בפוסט-מן, זה נשאר ריק ומופיע לי כ undefined.
ניסיתי כמה מדריכים ברשת אבל כלום לא עזר. יש לך אולי מושג מה אפשר לעשות?
תודה רבה

הי,

קודם כל אשמח שתדביק פה את התוכנית שאתה מריץ. לפעמים יש בעיה בקוד שקל לראות אותה.

שני דברים שאני בודק לפני הכל הם:

  1. לוודא שקוד צד שרת טוען את body-parser, שזה המידלוור שאחראי ליצירת התוכן בתוך req.body. הקוד שטוען אותו נראה בדרך כלל ככה:
app.use(bodyParser.json());
  1. לוודא ב Postman שאתה שולח HTTP Header בשם Content-Type עם סוג התוכן של ה body. בדרך כלל זה יהיה application/json.

אכן עשיתי את כל הדברים הללו, ועדיין זה אותו מצב…אני מצרף תמונה של app.js
של הראוטר הספציפי הזה index.js
ושל הפוסט-מן… בפוסט מן רואים למטה גם את הvscode ששם רואים את ההדפסה של הreq.body


תודה רבה

הי

בקוד השרת לא ראיתי התיחסות ל body-parser. באיזה שורה אתה טוען אותו?

לגבי הפוסטמן יכול להראות בצילום מסך איפה כל ה HTTP Headers של הבקשה ?

זה הסתדר לי היום, באופן די מוזר או הגיוני, הייתי צריך להעביר את שורות הקוד של אנקודד לפני הכל אחרי הטעינה של המונגו…ובאורח פלא זה עובד…אין לי הסבר, אשמח אם לך יש הסבר הגיוני למה זה קורה?

בדרך כלל אם שינוי סדר משפיע זה אומר שאחד המידלוורים הקודמים ברשימה תפס או שינה משהו שבגללו המידלוור המאוחר יותר לא יכל לעבוד. זאת הסיבה שאתה לא יכול לשים נתיב שיהיה זהה לשם קובץ, כי אז static כבר יענה לפני שה route יספיק לקבל את הבקשה.

אצלך אני לא יכול לראות את כל הקוד רק מה ששמת בצילום אבל מה שהייתי מנסה זה להזיז למעלה בהדרגה את השורה של ה urlencoded וככה להבין איזה מידלוור בדיוק מקלקל אותה (מי הראשון שמעליו היא מתחילה לעבוד). אחרי זה צריך להבין מה בדיוק המידלוור הזה עושה - אולי הוא משנה את ה request.body או משהו בסגנון.

הימור שלי שהפונקציה routesInit אצלך היא זאת שמייצרת את קוד הטיפול בנתיבים ולכן בקשה מגיעה ל Routes Handler לפני שהיא עברה אצל urlencoded. מאחר ו urlencoded הוא זה ששם את התוכן בתוך request.body אז התוכן פשוט עדיין לא הגיע לשם כשאתה מנסה לקרוא אותו.

לייק 1

תודה זה אכן מה שקרה…ישבתי על זה כמה ימים טובים, וניסיתי גם בודי פארסר שכבר לא נתמך באקספרס החדש…
אם הבנתי נכון כרגע הוא מוגדר בתוך האקספרס באופן מובנה או משהו כזה…
בכל מקרה תודה על ההסבר המעמיק…
ממש נהנתי מהסרטונים שלך שנתנו לי הבנה מעמיקה יותר,
לצערי כרגע ביטלתי את המנוי למרות שלדעתי אני יחדש אותו שוב, פשוט היה לי חודשיים שלא השתמשתי באתר בגלל סיבות אישיות ולכן זה כבר ניהיה לי יקר מדי…
אבל באמת תודה רבה על כל מה שנתת לי…

לייק 1

בכיף אין לחץ המנגנון של תשלום חודשי בדיוק נועד כדי שתעשה מנוי רק כשאתה צריך ויש לך זמן ללמוד

הבעיה היא שאני רוצה לשבת ללמוד ובטוח שמחר זה יתפנה או מחרתיים אז אני לא מבטל, ואז יוצא חודש שלם שלא לומדים…תחשוב על זה שאולי כדאי למכור גם קורס בנפרד עם גישה חופשית תמיד…