2017-08-22 1 views
0

J'essaie de mettre une liste à l'intérieur d'une autre liste dans une autre liste dans ma base de données firebase, je l'ai actuellement dans ma firebase et mon application android, mais l'application est très lente et j'ai compris à partir de YouTube que c'est à cause de la façon dont Firebase gère ce genre de situations, je n'ai rien trouvé sur différentes méthodes pour stocker la liste dans une autre liste etc ..., tout le monde a une meilleure idée je fais? Je sais que les grandes applications comme Spotify sont basées sur google cloud et firebase, et je suis sûr qu'ils utilisent la liste dans une autre liste dans leur firebase, mais comment puis-je faire pour ne pas ralentir mon application?la meilleure façon de stocker la liste à l'intérieur d'une liste dans la base de données firebase

est ici comment je veux que ma base de données firebase être, mais actuellement avec moins de listes dans une autre liste, il est très laggy et ralentit mon application vers le bas ...

+1

Vous n'avez pas besoin d'imbriquer fortement vos données. Par exemple, les commentaires pourraient être contenus dans une référence entièrement distincte, et non dans la photo elle-même. –

+0

Vous avez inclus une image de l'arborescence JSON dans votre question. Veuillez le remplacer par le texte JSON actuel, que vous pouvez facilement obtenir en cliquant sur le lien Export JSON dans [votre console Firebase Database] (https://console.firebase.google.com/project/_/database/data/) . Avoir le JSON sous forme de texte le rend facilement consultable, nous permet de l'utiliser facilement pour tester avec vos données réelles et l'utiliser dans notre réponse et en général, c'est juste une bonne chose à faire. –

+0

Il semble que vous ayez déjà compris que les données profondément imbriquées sont la cause du problème de performance de votre application. Une supposition éclairée (vous n'avez pas partagé le [code minimal qui reproduit le problème] (http://stackoverflow.com/help/mcve) ") est que vous téléchargez trop de données, la solution dans ce cas est de aplatissez les données, par exemple, stockez les commentaires dans une liste distincte de haut niveau.Il n'y a pas de commutateur magique qui accélère les performances pour les applications plus volumineuses, il s'agit de choisir le meilleur modèle de données pour les cas d'utilisation et les performances requises. –

Répondre

0

Vous pouvez séparer les éléments dans les différents noeuds dans Firebase puisque chaque .push() vous donne un UID.

La façon dont vous faites peut être lourde (comme vous le savez peut-être) si un utilisateur a beaucoup d'images avec beaucoup de commentaires.

Si une image utilisateur ne contient que des commentaires, une description, une URL et des mentions J'aime, vous pouvez simplement ranger les commentaires.

user_photos 
|_ user_id 
| |_ pic_id 
|  |_ url 
|  |_ likes 
|  |_ description 
|  |_ comments_id 
pics_comments 
|_ pic_id 
    |_ comment_id 
     |_ text 
     |_ user_id 

séparation plus que cela ne sert à rien puisque vous devrez faire un autre appel à Firebase juste pour obtenir une pièce d'identité ou de référence. Et avec cette structure c'est bien car vous pouvez l'interroger et obtenir juste comme les premières images X à montrer et ensuite utiliser un bouton où l'utilisateur peut voir plus ou tout voir et puis, si vous voulez, charger les commentaires seulement quand l'utilisateur fait défiler vers le bas ou cliquez pour voir les commentaires.

Hope this helps.

+0

Merci pour la réponse, j'ai essayé de le faire comme vous l'avez dit et cela fonctionne aussi lent que l'ancienne méthode que j'ai utilisée ... – shon

+0

Mais quelle partie est lente? Obtenir des données? Ouverture des images? Affichage des données sur votre application? –