Firebase Realtime Database

一天就上手

Neo Hsu

Firebase

  • A prior startup founded by James Tamplin and Andrew Lee in 2011
  • Provided developers an API that enables the integration of online chat functionality
  • Firebase as a separate company in April 2012
  • Firebase was acquired by Google in October 2014
  • Google acquired Fabric and Crashlytics in January 2017

Firebase

Firebase Database

Store and sync data with our NoSQL cloud database.

Data is synced across all clients in realtime, and remains available when your app goes offline

Key capabilities

  • Realtime
  • Offline
  • Accessible from Client Devices
  • Scale across multiple databases

Firebase Database

  • Realtime Database
  • Cloud Firestore
    If you're comfortable with a product in beta, use Cloud Firestore for your new projects.

Firebase Realtime Database

  • Android
  • iOS
  • Web
  • Rest
  • Admin

Data Structure

{
  "users": {
    "alovelace": {
      "name": "Ada Lovelace",
      "contacts": { "ghopper": true },
    },
    "ghopper": { ... },
    "eclarke": { ... }
  }
}

CRUD

  • Create (Push)
  • Read (On)
  • Update (Update/Set)
  • Delete (Remove)

CRUD

const admin = require('firebase-admin')
const serviceAccount = require('../keys/pg-firebase-49eba-firebase-adminsdk-cvj83-01c9129dd5')

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://pg-firebase-49eba.firebaseio.com',
})

const db = admin.database()
db.ref('words').push({
  name: 'test',
  data: ['http://www.google.com', 'http://www.google.com'],
  team: {
    name: 'team',
  },
  tag: [
    {
      type: '#',
      name: 'test#',
    }, {
      type: '@',
      name: 'test@',
    }
  ]
})

Querying Data

const db = firebaseAdmin.database();
const ref = db.ref("dinosaurs");
ref.orderByChild("height").on("child_added", function(snapshot) {
  console.log(snapshot.key + " was " + snapshot.val().height + " meters tall");
});
  • orderByChild

  • orderByKey

  • orderByValue

  • limitToFirst

  • limitToLast

  • startAt

  • endAt

  • equalTo

Retrieving Data

db.ref('/words').on('child_added', (snap) => {
  console.log('added:', snap.key)
})

db.ref('/words').on('value', (data) => {
  console.log(data.val())
})
  • Value

  • Child Added

  • Child Changed

  • Child Removed

  • Child Moved

Thanks

deck

By Neo Hsu

deck

  • 682