Lese data frå Cloud Firestore
I artikkelen "Skrive data til Cloud Firestore" lærte du korleis du legg inn data i databasen. I denne artikkelen skal du lære korleis du hentar data ut frå databasen og lagar spørjingar for å velje kva data du vil hente ut.
I denne leksjonen skal du bruke desse Firebase-funksjonane:
collection, doc, addDoc, setDoc, getDoc, getDocs, query, where, orderBy
Pass på å importere desse frå (...)/firebase-base-firestore.js i koden din (lim inn linja over etter import { getFirestore,
i koden din).
For at du skal kunne ha data å jobbe med, kan du kopiere koden under til skriptet ditt for å legge inn fire elevar i databasen din:
På same vis som at det finst fleire måtar å skrive data til databasen på, finst det òg fleire måtar å lese frå databasen på. Dei enklaste er getDoc()
og getDocs()
.
Hente ut eitt dokument frå databasen med getDoc()
getDoc()
blir brukt til å hente ut enkeltdokument frå databasen og krev at du veit ID-en til dokumentet du skal hente. Til liks med setDoc()
bruker getDoc()
funksjonen doc()
for å angi kva dokument som skal hentast ut. getDoc()
returnerer eit databaseobjekt, og derfor må du opprette ein variabel for å lagre dataa som blir henta ut.
Koden for å hente ut dokumentet vi laga for eleven Jakob Nilsen, blir som under.
Merk at vi skriv await
framfor getDoc()
for å sørgje for at neste linje i koden ikkje blir køyrd før kommunikasjonen med databasen er ferdig.
Resultatet blir skrive ut slik i konsollen:
Når vi hentar ut data frå databasen, kallar vi det vi hentar ut eit "snapshot", for det representerer eit augneblinksbilete av dataa i den augneblinken vi hentar dei ut frå databasen. const docSnap
i koden over representerer eit augneblinksbilete av eitt dokument i databasen (docSnap er her berre eit variabelnamn og kan i utgangspunktet vere kva som helst, men dette er eit døme på eit beskrivande variabelnamn). docSnap.data()
hentar ut alle dataa som er lagra i dokumentet og presenterer dei som eit objekt. Om du vil hente ut enkeltdata, kan du skrive det slik:
Prøv å lime inn desse to linjene i koden din og sjå kva som blir skrive ut i konsollen.
Hente ut alle dokumenta i ei samling med getDocs()
getDocs()
blir brukt for å hente ut fleire dokument på ein gong frå databasen. Det kan vere anten alle dokumenta i ei samling eller eit utval basert på gitte kriterium (query). getDocs()
returnerer ei liste (array) med databaseobjekt.
For å hente ut alle dokumenta i ei samling bruker vi collection()
inne i getDocs()
for å angi kva samling vi skal hente dokumenta frå. For å hente ut alle dokumenta i elevlista blir koden slik:
snapshot.forEach()
er ei lykkje som køyrer ein gong for kvart dokument (docSnap
) i samlinga. I dømet skriv denne lykkja ut fornamn og etternamn til alle elevane til konsollen:
Med query()
kan vi lage spørjingar mot databasen. Ei spørjing er eit vilkår for å filtrere, avgrense eller sortere dataa som blir skrivne ut. Dette fungerer i utgangspunktet på same måte som i SQL. Til dømes kan vi hente ut berre elevar som er registrerte med e-post, eller vi kunne ha henta ut berre elevar som har matematikk som eit av faga sine. For å lage ei spørjing kan vi bruke funksjonane where()
, orderBy()
, startAt()
, startAfter()
, endAt()
, limit()
eller limitToLast()
.
Til dømes kan vi lage ei spørjing for å hente ut alle elevar, sortert på etternamn:
Vi kan òg lage ei spørjing for å berre hente ut elevar som er registrerte med e-post:
Vilkåret where("e-post", "!=", "undefined")
betyr at e-post skal vere ikkje lik (!=
) "undefined". Det vil seie at spørjinga ser bort frå elevar som ikkje har registrert e-post (e-post == undefined
).
Vi skal no bruke denne spørjinga opp mot databasen og skrive ut resultatet:
querySnapshot.forEach()
skriv ut alle resultata av spørjinga i konsollen:
Relatert innhald
I denne guiden vil du lære eit basisoppsett som du skal bruke vidare i modulen "Lage ei dynamisk webside med databasekopling i Firebase Cloud Firestore".
I NoSQL-databasar blir data organiserte i samlingar og dokument. I denne artikkelen skal du lære to metodar for å opprette dokument i Cloud Firestore.