Una cosa su cui sto combattendo un po 'con Firebase (o altri dbs di NOSQL, sto supponendo?) È il fatto che gli id non fanno parte del corpo di la riga". Quindi, se la mia collezione si presenta come:Tenere traccia degli id in 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..."
Se posso recuperare il BooksList
, quindi selezionare myBook = books[ldJEIF]
di fare qualcosa con i dati, myBook
non ha idea di dove nella lista è venuto. Se successivamente voglio aggiungerlo a un UserLibrary
, ad esempio, devo de-normalizzare i miei dati, o fare una sorta di ricerca inversa, o passare ldJEIF
in giro invece dell'oggetto libro e cercare costantemente i dati. Mi sto perdendo qualcosa? Qual è il modo migliore per affrontare questo problema?
Grazie per la risposta completa. – sprugman
Mantenere un'istantanea in giro è in realtà una cosa perfettamente sicura/corretta da fare. Le istantanee sono immutabili, quindi non verranno cambiate da sotto di te anche se i dati sottostanti sono cambiati. Ogni snapshot ha una funzione .ref() che è possibile utilizzare per ottenere un nuovo riferimento Firebase per tali dati. –
Se il riferimento firebase è firebase-riferimento Util -> C'è un "bug" interessante con questa soluzione (var data = snapshot.val(); data.id = snapshot.name();). Il callback viene attivato più volte. – Casero