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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 3 כותבים 237 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • 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
      • yossizY yossiz

        אנסה את מזלי (למרות שהנסיון שלי בנוד ו-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 מנותק
        dovidD מנותק
        dovid
        ניהול
        כתב ב נערך לאחרונה על ידי
        #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
        • dovidD dovid
          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);
          

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

          yossizY מחובר
          yossizY מחובר
          yossiz
          כתב ב נערך לאחרונה על ידי yossiz
          #5

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

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

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

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

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

          dovidD תגובה 1 תגובה אחרונה
          1
          • yossizY yossiz

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

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

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

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

            dovidD מנותק
            dovidD מנותק
            dovid
            ניהול
            כתב ב נערך לאחרונה על ידי dovid
            #6

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

            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
            תגובה 1 תגובה אחרונה
            4
            • dovidD dovid

              בעיקרון הקוד הראשון שחוקרי עשה הוא מצויין, רק שאין כזה דבר לעשות 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]);
                  });
              

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

              ח מנותק
              ח מנותק
              חוקר
              כתב ב נערך לאחרונה על ידי
              #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
                • dovidD dovid

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

                  
                  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]);
                      });
                  
                  

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

                  ח מנותק
                  ח מנותק
                  חוקר
                  כתב ב נערך לאחרונה על ידי
                  #9

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

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

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

                  dovidD תגובה 1 תגובה אחרונה
                  0
                  • ח חוקר

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

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

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

                    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
                    • dovidD dovid

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

                      
                      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]);
                          });
                      
                      

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

                      ח מנותק
                      ח מנותק
                      חוקר
                      כתב ב נערך לאחרונה על ידי
                      #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
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום