Phoenix's Blog

Node.js | FireBase

2019-09-06

[Node.js] - FireBase

FireBase 簡介

FireBase 是一套 Web 的應用程式開發平台,目前他可支援手機APP與 Web 許多服務,目前只用到「資料庫」、「認證」功能,其他到時候使用到再繼續補上.

安裝 firebase 相關模組

安裝 firebase

1
npm install firebase --save

firebase 使用方法

進到 firebase 網站登入帳號後,先建立一個新的 firebase 專案

建立完後進到專案控制台,接著點選左側「Database」並點選建立「資料庫」且以「測試模式」啟動

這樣資料庫就建立完成,接著點選左上角「齒輪」裡的專案設定

到最下方會看到「您的專案沒有任何應用程式」的提示,點選 </> ,將「新增Firebase SDk 」的內容複製到自己開發的 Node.js 專案裡.


貼到相對應的 js 裡與 node.js

1
<script src="https://www.gstatic.com/firebasejs/6.6.0/firebase-app.js"></script>

Node.js

1
2
3
4
5
6
7
8
9
10
11
var firebase = require('firebase');
const firebaseConfig = {
apiKey: XXX,
authDomain: XXX,
databaseURL:XXX,
projectId: XXX,
storageBucket: XXX,
messagingSenderId:XXX,
appId: XXX
};
firebase.initializeApp(firebaseConfig);

入門語法:

語法:

1
2
3
4
firebase.database().ref().set()

// ref(): 尋找路徑,()為空時預設根目錄
// set(): 要設定的值、物件...

讀取一次資料庫的資料:

  • .once()
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     var path = firebase.database().ref('XXX/XXX/XX...');
    path.once('value',function(snapshot){
    snapshot.val(); //.val()轉換obj或json可讀取的資料
    }
    ```
    ### 即時監聽:
    * `..on()`
    - 語法與 .once() 相同
    ### 設定值 - `set` 方法:

    ```javascript=
    firebase.database().ref().set(people);//people為設定的資料
  • 後面搭配 .then(),意思是若有 set 值完那就執行接下來的事
    1
    2
    3
    firebase.database().ref().set(people).then(function(){
    XXX..... //執行接下來的事
    });

設定值 -push 方法:

  • 會自動產生一組 key
1
2
3
4
var todos = firebase.database().ref('todos');
todos.push({
content:'要開會'
})

結果:

刪除

  • remove()
    • 搭配 child():子路徑
1
2
3
var todos = firebase.database().ref().child('todos');
todos.child('-LkwvIhG6EEoJEAByWIi').remove();
//child('指定key')

其中「要開會2」就會被刪除

排序

1
orderByChild('欄位名稱')
  • age來排序:
    1
    2
    3
    4
    5
    6
    var peoplePath = firebase.database().ref('people');
    peoplePath.orderByChild('age').once('value',function(snapshot){
    snapshot.forEach(function(item){
    console.log(item.val());
    })
    })

取得區間

1
2
3
startAt():以上
endAt():以下
equalTo():等於
  • 以 startAt() 為例:取得年齡大於23歲:
    1
    2
    3
    4
    5
    6
    var peoplePath = firebase.database().ref('people');
    peoplePath.orderByChild('age').startAt(23).once('value',function(snapshot){
    snapshot.forEach(function(item){
    console.log(item.val());
    })
    })

結果:

  • 限制筆數:
    • limitToFirst(數量):限制前X筆
    • limitToLast(數量):限制倒數X筆
  • 查詢大於23歲的第一筆資料:
    1
    2
    3
    4
    5
    6
    var peoplePath = firebase.database().ref('people');
    peoplePath.orderByChild('age').startAt(23).limitToFirst(1).once('value',function(snapshot){
    snapshot.forEach(function(item){
    console.log(item.val());
    })
    })

結果:

tags: Node.js FireBase
Tags: Node.js