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

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

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

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

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

  • התחברו או הירשמו כדי לחפש.