angular / angularfire

Angular + Firebase = ❤️
https://firebaseopensource.com/projects/angular/angularfire2
MIT License
7.69k stars 2.19k forks source link

Inconsistent results from collectionData() #3228

Open hampusboas opened 2 years ago

hampusboas commented 2 years ago

Angular:13.2.2 Firebase:9 AngularFire:7.3.0 Other (e.g. Ionic/Cordova, Node, browser, operating system): Google Chrome Version 102.0.5005.61 (Official Build) (x86_64)

Actual behavior

Hi, i don't know if this is a bug or a cache-related issue. But when i use a Angular resolver to resolve data from my service i get Inconsistent results from my query. Take this simple method for an example:

`getAllUserTeams(userId: string): Observable<ITeam[]> {

    const _query = query(
        this.collection,
        where('userId', '==', userId),
        orderBy('createdAt', 'asc')
    );

    return collectionData(_query, { idField: 'id' }) as Observable<
        ITeam[]
    >;
}`

This method should return all the users team. But when i use this in my resolver it only runs once obviously and the results varies for each reload or navigation. But when i use the method with a realtime subscription in the component is shows the correct number of teams.

So should i use getDocs instead of collectionData for these situations? But if i use getDocs i loose the ability to auto-convert it to a model and need to do that manually..

Expected behavior

Return the correct teams.

Best regards!

google-oss-bot commented 2 years ago

This issue does not seem to follow the issue template. Make sure you provide all the required information.