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

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

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

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

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

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

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

    תודה

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