Une chose avec laquelle je me bats avec Firebase (ou d'autres db NOSQL, je devine?) Est le fait que les ID ne font pas partie du corps de la ligne". Donc, si ma collection ressemble:Garder la trace des ids dans NOSQL db (firebase)
Books
|----ldJEIF
|----Title: "A Tale of Two Cities"
|----Author: "Charles Dickens"
|----Body: "It was the best of times..."
|----2difie
|----Title: "Moby Dick"
|----Author: "Herman Melville"
|----Body: "Call me Ishmael..."
Si je récupère le BooksList
, puis sélectionnez myBook = books[ldJEIF]
pour faire quelque chose avec les données, myBook
n'a aucune idée dans la liste, il est venu. Si par la suite je veux l'ajouter à un UserLibrary
, par exemple, je dois soit dénormaliser mes données, soit faire une sorte de recherche inversée, ou passer ldJEIF
au lieu de l'objet livre et rechercher constamment les données. Est-ce que je manque quelque chose? Quelle est la meilleure façon de traiter ce problème?
Merci pour la réponse approfondie. – sprugman
Garder un instantané est en fait une chose parfaitement sûre/correcte à faire. Les instantanés sont immuables, de sorte qu'ils ne seront pas modifiés par vous même si les données sous-jacentes sont modifiées. Chaque instantané a une fonction .ref() que vous pouvez utiliser pour obtenir une nouvelle référence Firebase pour ces données. –
Si la référence de Firebase est Firebase-Util reference -> Il y a un "bug" intéressant avec cette solution (var data = snapshot.val(); data.id = snapshot.name();). Le rappel est déclenché plus de fois. – Casero