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 funksjonene
orderByChild() orderByKey() og orderByValue()
sammen med filtreringsfunksjonene
limitToFirst() 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
    }
}

results matching ""

    No results matching ""