Firebase lyssnar till referenser till olika objekt

firebase.database().ref("posts")
firebase.database().ref("users")
firebase.database().ref("comments")

IstÀllet för tabeller har vi objekt, samt referenser till dessa objekt

.on('value') lyssnar pÄ vÄra förÀndringar i DB

firebase.database().ref("messages")
  .on('value', function(snapshot){
    console.log(snapshot.val());
});

Vi mÄste plocka ut vÄra vÀrden med .val()

firebase.database().ref("messages")
  .on('value', function(snapshot){
    console.log(snapshot.key);
});

Vi kan Àven komma Ät nyckeln med snapshot.key

Observera att key inte Àr en funktion

//Add value
firebase.database().ref("todos").push(stuffToPush);
//Remove value
firebase.database().ref("refToRemove").remove();
//Update value
firebase.database().ref("refToChange").set(true);

More listeners đŸ”„

.on('value') hÀmtar ALLT i referensen varje gÄng

Vi kan lyssna pÄ andra events Àn value

"child_added"

firebase.database().ref("todos")
  .on("child_added", (snapshot) => {
    console.log(snapshot.val());
});

Returnerar ENBART det som har lagts till

"child_removed"

firebase.database().ref("todos")
  .on("child_removed", (snapshot) => {
    console.log(snapshot.val());
});

Returnerar ENBART det som har tagits bort

"child_changed"

firebase.database().ref("todos")
  .on("child_changed", (snapshot) => {
    console.log(snapshot.val());
});

Returnerar ENBART det som har Àndrats

Vi kan fortfarande anvÀnda .on('value')

Men det Àr mer optimerat att anvÀnda dessa funktioner

Vi hÀmtar mindre data frÄn databasen varje gÄng

===

Snabbare

Minus för detta

Vi mÄste skriva mer kod

Inget problem, för det Àr vÄrt jobb

Filtrering / Sortering

LÀttast att göra det mesta i JavaScript faktiskt

Men vi kan optimera vÄra queries

.orderByChild("childToOrderBy")

firebase.database()
  .ref("todos")
  .orderByChild("date") //before 'on()' and after 'ref()'
  .on("value", (snapshot) =>{
    console.log(snapshot.val());
});

Sorterar informationen som kommer frÄn databasen via en egenskap

Kopplat till detta har vi olika queries

T.ex. .limitToFirst()

firebase.database()
  .ref("todos")
  .orderByChild("date")
  .limitToFirst(10) //Grab the first 10
  .on("value", (snapshot) =>{
    console.log(snapshot.val());
});

.limitToLast()

firebase.database()
  .ref("todos")
  .orderByChild("date")
  .limitToLast(10) //Grab the last 10
  .on("value", (snapshot) =>{
    console.log(snapshot.val());
});

.startAt()

firebase.database()
  .ref("todos")
  .orderByChild("date")
  .startAt("2017-01-20") // Start at value
  .on("value", (snapshot) =>{
    console.log(snapshot.val());
});
  • .limitToFirst()
  • .limitToLast()
  • .startAt()
  • .endAt()
  • .equalTo()

Alla mÄste skrivas i kombination med .orderByChild()