Firebase
Lag deg en konto på firebase, start et nytt prosjekt og gå inn i prosjektet.
Det er mulig at du må klikke på get started for å få fram dette vinduet:Her ser du hovedmenyen for å styre firebase databasen.
Klikk på Authentication og aktiver epost login.
Deretter klikker du på Database og får følgende bilde
Her er risk-b1fc9 navnet prosjektet mitt fikk av firebase.
Koble til firebase fra html
Klikk på (</>) knappen (Add Firebase to your web app) og kopier følgende inn i din prosjekt.js til din webside:
var config = {
apiKey: "AIzaSyBsSmSbBvxxxapak-USd6oUBnkoVE0ls",
authDomain: "xxxx-7871d.firebaseapp.com",
databaseURL: "https://xxxx-7871d.firebaseio.com",
projectId: "xxxx-7871d",
storageBucket: "xxxx-7871d.appspot.com",
messagingSenderId: "32888067446"
};
firebase.initializeApp(config);
Koden du kopierer vil være litt forskjellig fra denne - da den skal koble til din database.
Koden skal limes inn i setup() funksjonen
function setup() {
// Initialize Firebase
var config = {
apiKey: "AIzaSyBsSmSbBvjGwUKapak-USd6oUBnkoVE0ls",
authDomain: "xxxx-7871d.firebaseapp.com",
databaseURL: "https://xxxx-7871d.firebaseio.com",
projectId: "xxxx-7871d",
storageBucket: "xxx-7871d.appspot.com",
messagingSenderId: "35548067446"
};
firebase.initializeApp(config);
}
Opprette en tabell i firebase
For å lage en tabell i firebase må du velge prosjekt og gå inn på fanen database.
Deretter klikker du på + knappen og definerer tabellnavnet.
Klikk så på + knappen igjen og legg til nøkkel for en post
Klikk på + igjen og legg inn felt for tabellen.
Merk at nøkkelen ikke er et felt i tabellen.
Tabellen Elev i firebase
I tabellen under er 1001,1002 nøkkelverider i tabellen elev.
etternavn og fornavn er vanlige felt.
ELEV
{
"1001" : {
"epost" : "[email protected]",
"etternavn" : "olsen",
"fornavn" : "Ole",
"mobil" : 3234343
},
"1002" : {
"etternavn" : "pettersen",
"fornavn" : "per",
"mobil" : 1234444,
"epost" : "[email protected]"
}
}
Denne tabellen er laga ut fra UML modellen under
For at databasen skal fungere godt med store datamengder er det ofte nødvendig med en indeks.
Typisk vil firebase varsle om at du trenger en indeks på et felt når du bruker orderByChild på feltet.
Gitt denne spørringen:
let ref = firebase.database().ref("dyr").orderByChild("kundenr").equalTo(valgt);
Her vil firebase opplyse om at vi trenger en indeks på kundenr.
For å legge til en indeks på feltet kundenr i tabellen må vi skrive følgende i RULES.
"dyr" : {
".indexOn":"kundenr"
}
Spørringer i firebase
I relasjonsdatabaser bruker vi SQL (structured query language - strukturert spørrespråk) til å hente ut data fra databasen. Da kan vi be om å få en liste over alle kunder som har ubetalte faktura til samla verdi over 500kr
eks. (avkorta)
select userid,adress,total from USER inner join ACCOUNT on (USER.id = ACCOUNT.id) ....
I firebase kan vi ikke bruke SQL - vi må bruke de innebygde funksjoneneorderByChild() orderByKey() og orderByValue()
sammen med filtreringsfunksjonenelimitToFirst() limitToLast() startAt() endAt() equalTo()
Et eksempel:
Vi skal finne alle dyr som eies av en gitt kunde (kundenr 1001).
let ref = firebase.database().ref("dyr").orderByChild("kundenr").equalTo(1001);
Vi skal finne ut hvem som eier Nusse
let ref = firebase.database().ref("dyr").orderByChild("navn").equalTo("Nusse");
Nå kan vi hente ut kundenr fra ref
ref.once("value").then(function (snapshot) {
let dyret = snapshot.val();
if (dyret) {
console.log(dyret.kundenr); // skriver ut kundenr
}
});
Tabellen Kunde
{
"1001" : {
"epost" : "[email protected]",
"etternavn" : "olsen",
"fornavn" : "Ole",
"mobil" : 3234343
},
"1002" : {
"etternavn" : "pettersen",
"fornavn" : "per",
"mobil" : 1234444
}
}
Tabellen Dyr
{
"947" : {
"art" : "katt",
"fdato" : 2011,
"kjønn" : "M",
"kundenr" : 1001,
"navn" : "bolla",
"vekt" : 25
},
"948" : {
"art" : "katt",
"kjønn" : "F",
"kundenr" : 1002,
"navn" : "Nusse",
"vekt" : 4
}
}