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

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

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

עזרה בfirebase

מתוזמן נעוץ נעול הועבר תכנות
8 פוסטים 2 כותבים 259 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossbossY מנותק
    yossbossY מנותק
    yossboss
    כתב ב נערך לאחרונה על ידי yossboss
    #1

    0e7dd27b-77a7-41ac-9efe-a4aa610b644b-image.png
    07f6ee50-501b-4fa8-9f48-82c83db1a053-image.png
    וכל זה ב7-8 הכי הרבה 10 קריאות

    //servise אנגולר
    import {Injectable} from '@angular/core';
    import {AngularFirestore} from '@angular/fire/compat/firestore';
    import {catchError} from 'rxjs/operators';
    import {throwError} from 'rxjs';
    
    @Injectable({
      providedIn: 'root'
    })
    export class DataService
    {
      videos: any[] = []
      errorVideos: any = false
      users: any = false
    
      constructor (private firestore: AngularFirestore)
      {
        this.getvideos();
      }
    
      getvideos ()
      {
    
        if (this.videos.length === 0 && !this.errorVideos)
        {
          this.firestore.collection('videos')
            .valueChanges()
            .pipe(
              catchError(error =>
              {
                this.errorVideos = {
                  text: error.message
                }
                if (localStorage.getItem('videos') != null)
                {
                  let string: any = localStorage.getItem('videos')
    
                  this.videos = JSON.parse(string)
    
                  this.errorVideos.timevideos = localStorage.getItem('timevideos')
    
                  console.log(this.videos)
                }
                return throwError(error);
              })
            )
            .subscribe(data =>
            {
              this.videos = data;
    
              console.log(this.videos)
    
              let string = JSON.stringify(this.videos)
              localStorage.setItem('videos', string)
              localStorage.setItem('timevideos', '' + new Date().getTime())
            });
        }
      }
    }
    
    

    ובמילים פשוטות בconstrctor(בנאי מופעל ברגע הראשון)
    יש קריאה ל
    this.getvideos();
    ששולח קריאה לfirebase לקבל את כל הcollection
    ( this.firestore.collection('videos')
    .valueChanges())
    ולשמור אותו במשתנה videos וכל זה רק במקרה שעדיין הוא ריק (כי יש כמה מקומות שמשתמשים בservise הזה)
    (כל מה שלפני הsubscribe זה טיפול בשגיאות)

    מספר פעמים רעננתי את הדף (כי הרי הוא לא יקרא לנתונים פעמים באותו כניסה)
    ואחרי מספר פעמים
    התמונות למעלה

    תגובת הקונסול
    ROR FirebaseError: Quota exceeded.
    h

    בקולקשן (collection) videos יש 3579 אובייקטים שמכילים

    date סטרינג
    id סטרינג
    img אוביקט עם url , אורך ורוחב כולם סטירינג (רוחב ואורך מספר)
    name סטרינג
    text סטרינג
    userid סטרינג

    אבל בfirebase זה נראה כאילו קראתי יותר מ50000 (50k) פעם
    יכול להיות שזה לפי אוביקט ולא לפי קריאה ?

    פיתוח אתרים 👇
    https://aspectil.web.app/

    yossbossY dovidD 2 תגובות תגובה אחרונה
    0
    • yossbossY מנותק
      yossbossY מנותק
      yossboss
      השיב לyossboss ב נערך לאחרונה על ידי
      #2

      מצרף תצלום מסך נוסף
      fc0f2cc0-69f8-4d28-a519-f487185b1a37-image.png

      פיתוח אתרים 👇
      https://aspectil.web.app/

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

        @yossboss כתב בעזרה בfirebase:

        ששולח קריאה לfirebase לקבל את כל הcollection

        אם איזה ספריה אתה משתמש?
        כי חוששני שהvalueChanges מביא את כל הרשימה על כל שינוי.
        זה אולי לא עונה בכלל איך מגיעים ל50 אלף (אני לא יודע: 1. האם יש כמה דפדפנים שפונים לדף, ב. האם מי מהם מבצע שינויי הוספה/מחיקה/עדכון פריט),
        אבל זה בהחלט לא רצוי מבחינת ביצועים והן מצד הבעיה שלך (אז למה זה עשוי? לא אדע בלי לראות תיעוד).

        @yossboss כתב בעזרה בfirebase:

        מספר פעמים רעננתי את הדף (כי הרי הוא לא יקרא לנתונים פעמים באותו כניסה)

        זו טעות.
        כשאתה עושה ריענון הוא מבצע שוב את הבקשה.
        רק כשאתה מנווט (למשל לוחץ על לינק לדף אחר באנגולר) אז לא מתבצע ריענון של האפליקציה, בגלל מנגנון הSPA.

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

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

        yossbossY 2 תגובות תגובה אחרונה
        0
        • yossbossY מנותק
          yossbossY מנותק
          yossboss
          השיב לdovid ב נערך לאחרונה על ידי
          #4

          @dovid כתב בעזרה בfirebase:

          זו טעות.
          כשאתה עושה ריענון הוא מבצע שוב את הבקשה.
          רק כשאתה מנווט (למשל לוחץ על לינק לדף אחר באנגולר) אז לא מתבצע ריענון של האפליקציה, בגלל מנגנון הSPA.

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

          לגבי הסיפריה היא סיפריה של אנגולר

          @angular/fire
          

          לא כל כך הבנתי מה התכוונת שכל פעם מביא מחדש

          יכול להיות שהוא קורה לכל אוביקט קריאה
          (ואז כל התחברות שלי מביא 4000 אובייקטים)

          פיתוח אתרים 👇
          https://aspectil.web.app/

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

            @dovid כתב בעזרה בfirebase:

            כי חוששני שהvalueChanges מביא את כל הרשימה על כל שינוי.
            זה אולי לא עונה בכלל איך מגיעים ל50 אלף (אני לא יודע: 1. האם יש כמה דפדפנים שפונים לדף, ב. האם מי מהם מבצע שינויי הוספה/מחיקה/עדכון פריט),
            אבל זה בהחלט לא רצוי מבחינת ביצועים והן מצד הבעיה שלך (אז למה זה עשוי? לא אדע בלי לראות תיעוד).

            זה נכון וזה מיועד למשל לפורום או הודעות כנראה
            אבל נראה לי שזה הפונקציה היחידה לקבל את הdata
            בכל מקרה בכל הזמן הזה לא היו שם שנויים

            פיתוח אתרים 👇
            https://aspectil.web.app/

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

              @yossboss כתב בעזרה בfirebase:

              אבל נראה לי שזה הפונקציה היחידה לקבל את הdata

              על מה התבססת בקוד? כי בדוגמאות שלהם היום יש הפשטה כזו שאפשר לאגד מאפיין ישירות לקולקשיין בלי טעינה מפורשת ובלי כלום.
              תראה פה:
              https://github.com/angular/angularfire/blob/master/docs/install-and-setup.md

              לגופה של שאלה, אין לי תשובה.

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

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

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

                @dovid

                אתה חושב שקריאה בצורה כזו תחסוך לי ?

                    const aCollection = collection(this.firestore2, 'videos')
                    this.items$ = collectionData(aCollection).subscribe(data =>
                    {
                      console.log(data)
                    });
                

                פיתוח אתרים 👇
                https://aspectil.web.app/

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

                  @yossboss לא,
                  כתבתי בפירוש שלא נראה לי שזה התשובה או זה מה שיחסוך, אבל עדיף לך לכתוב לפי איך שהם ממליצים.
                  אני חושב שאיך שכתבת זו הייתה הדרך פעם, והם פישטו את זה עוד יותר.
                  אולי על הדרך יחסוך לך, אדרבא.
                  אתה אכן מפסיד בדרך זו שאין לך כתיבה לlocalStorage בשביל מצב אופליין, מסתבר שיש אירועים ומתודות אחרים, אני לא מוצא תיעוד מסודר כ"כ.

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

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

                  תגובה 1 תגובה אחרונה
                  0

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

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

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