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

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

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

עזרה בfirebase

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

    Y dovidD 2 תגובות תגובה אחרונה
    0
    • Y yossboss

      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) פעם
      יכול להיות שזה לפי אוביקט ולא לפי קריאה ?

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

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

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

      תגובה 1 תגובה אחרונה
      0
      • Y yossboss

        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) פעם
        יכול להיות שזה לפי אוביקט ולא לפי קריאה ?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          @angular/fire
          

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                @dovid

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

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

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

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

                  @dovid

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

                      const aCollection = collection(this.firestore2, 'videos')
                      this.items$ = collectionData(aCollection).subscribe(data =>
                      {
                        console.log(data)
                      });
                  
                  dovidD מנותק
                  dovidD מנותק
                  dovid
                  ניהול
                  כתב ב נערך לאחרונה על ידי
                  #8

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

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


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

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

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