דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. NODEJS איחזור נתונים מתוך node-fetch

NODEJS איחזור נתונים מתוך node-fetch

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 3 כותבים 237 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY מחובר
    yossizY מחובר
    yossiz
    כתב ב נערך לאחרונה על ידי yossiz
    #2

    אנסה את מזלי (למרות שהנסיון שלי בנוד ו-JS שואף לאפס...)

    fetch('https://httpbin.org/post', {
            method: 'POST',
            body: 'a=1'
        })
        .then(res => {
            res.json().then(json => console.log(json));
            console.log(res.headers.get('content-type'));
        });
    

    שים לב שהקריאה לres.headers.get הוא סינכרוני (וזה אחד מהטעיות בקוד שלך, זה לא מחזיר promise אלא string ולכן א"א להעביר אותו לפונקציית then), לכן התשובה לזה מגיע לפני התשובה לres.json.

    עכשיו אני מעביר את הבמה למבינים 🙂

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    dovidD תגובה 1 תגובה אחרונה
    3
    • dovidD מחובר
      dovidD מחובר
      dovid ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #3
      fetch('https://httpbin.org/post', {
              method: 'POST',
              body: 'a=1'
          })
          .then(res => {
              return res.json().then(function(json){
                  return { headers: res.headers, bodyData: json };
              });
          })
          .then(console.log);
      

      (השורה האחרונה זה לצרכי טסט מתוך הקונסול בדפדפן).

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      yossizY תגובה 1 תגובה אחרונה
      2
      • dovidD מחובר
        dovidD מחובר
        dovid ניהול
        השיב לyossiz ב נערך לאחרונה על ידי
        #4

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

        fetch('https://httpbin.org/post', { method: 'POST', body: 'a=1' })
            .then(res => [res.json(), res.headers.get('content-type')]) 
            .then(arr => {
              console.log(arr[0]);
              console.log(arr[1]);
            });
        

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

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        ח תגובה 1 תגובה אחרונה
        2
        • yossizY מחובר
          yossizY מחובר
          yossiz
          השיב לdovid ב נערך לאחרונה על ידי yossiz
          #5

          @dovid אמר בNODEJS איחזור נתונים מתוך node-fetch:

          return { headers: res.headers, bodyData: json };
          

          לכאורה צ"ל res.headers.get() כי בלא זה, זה לא מאוכלס.

          @dovid ללמוד אני צריך, האם יש משהו לא נכון במה שכתבתי (נסיתי את הקוד לפני שהעליתי), או שסתם כתבת עוד דרכים?

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

          dovidD תגובה 1 תגובה אחרונה
          1
          • dovidD מחובר
            dovidD מחובר
            dovid ניהול
            השיב לyossiz ב נערך לאחרונה על ידי dovid
            #6

            @yossiz בקשר לget אתה צודק. זה אומר שא"א לגשת להכל בצורה קלה, במידה וזה נדרש אז אולי יש להשתמש בדרך אחרת מfetch (יש Headers.getAll() אבל זה מסומן כobsolate).
            הקוד שלך מצויין אבל א. רציתי להעמיד את הקוד הראשוני על מתכונתו ב. הקוד הראשוני שמיש יותר מהקוד שלך כי אצל פיסות המידע (גוף התשובה והכותרות) מאוחזרות בשתי נקודות זמן שזה פחות שמיש בתכנות נורמלי בJS.

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            4
            • ח מנותק
              ח מנותק
              חוקר
              השיב לdovid ב נערך לאחרונה על ידי
              #7

              @dovid אמר בNODEJS איחזור נתונים מתוך node-fetch:

                console.log(arr[0]);
              

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

              [ Promise { <pending> }, 'application/json' ]
              Promise { <pending> }
              application/json
              TypeError: Cannot read property 'forEach' of undefined
              

              הקוד הוא

                                  .then(res => [res.json(), res.headers.get('content-type')])
                                  .then(arr  => {
                                      console.log(arr);
                                      teams_stats = arr[0];
                                      console.log(arr[0]);
                                      console.log(arr[1]);
              arr[0].data.forEach(function (team) {
              //
              }
              })
              
              תגובה 1 תגובה אחרונה
              0
              • dovidD מחובר
                dovidD מחובר
                dovid ניהול
                כתב ב נערך לאחרונה על ידי
                #8

                צודק טעיתי, צריך לעשות את זה אחרת, מסובך טיפה:

                
                fetch('https://httpbin.org/post', { method: 'POST', body: 'a=1' })
                    .then(res => Promise.all([res.json(), res.headers.get('content-type')])) 
                    .then(arr => {
                      console.log(arr[0]);
                      console.log(arr[1]);
                    });
                
                

                אבל לדעתי יותר אלגנטי להשתמש עם אובייקט.

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                ח 2 תגובות תגובה אחרונה
                1
                • ח מנותק
                  ח מנותק
                  חוקר
                  השיב לdovid ב נערך לאחרונה על ידי
                  #9

                  @dovid אמר בNODEJS איחזור נתונים מתוך node-fetch:

                  (res => Promise.all([res.json(), res.headers.get('content-type')]))

                  תודה
                  כך זה עובד.
                  השאלה היא, אם לפני ואחרי הבקשה הזו אני משתמש בבקשות fetch נוספות, זה משפיע אליהם משהו?

                  dovidD תגובה 1 תגובה אחרונה
                  0
                  • dovidD מחובר
                    dovidD מחובר
                    dovid ניהול
                    השיב לחוקר ב נערך לאחרונה על ידי dovid
                    #10

                    @חוקר אמר בNODEJS איחזור נתונים מתוך node-fetch:

                    @dovid אמר בNODEJS איחזור נתונים מתוך node-fetch:

                    (res => Promise.all([res.json(), res.headers.get('content-type')]))

                    תודה
                    כך זה עובד.
                    השאלה היא, אם לפני ואחרי הבקשה הזו אני משתמש בבקשות fetch נוספות, זה משפיע אליהם משהו?

                    לא משפיע.

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    0
                    • ח מנותק
                      ח מנותק
                      חוקר
                      השיב לdovid ב נערך לאחרונה על ידי
                      #11

                      @dovid אמר בNODEJS איחזור נתונים מתוך node-fetch:

                      צודק טעיתי, צריך לעשות את זה אחרת, מסובך טיפה:

                      
                      fetch('https://httpbin.org/post', { method: 'POST', body: 'a=1' })
                          .then(res => Promise.all([res.json(), res.headers.get('content-type')])) 
                          .then(arr => {
                            console.log(arr[0]);
                            console.log(arr[1]);
                          });
                      
                      

                      אבל לדעתי יותר אלגנטי להשתמש עם אובייקט.

                      כך זה עובד, רק למה לא הולך לעשות את זה סתם כמערך, למשל:

                      fetch('https://httpbin.org/post', { method: 'POST', body: 'a=1' })
                          .then(res => [res.json(), res.headers.get('content-type')]) 
                          .then(arr => {
                            console.log(arr[0]);
                            console.log(arr[1]);
                      });
                      
                      תגובה 1 תגובה אחרונה
                      0

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום