紀錄如何使用 express + Firebase 設計 RESTful API Todoist
取得Firebase Admin SDK
開啟 專案設定 → 服務帳號
設定方法
- 安裝NPM
npm install firebase-admin --save
- 複製Admin SDK 設定程式碼片段,貼至 app.js
下載Firebase金鑰(json檔案),並修改Firebase金鑰路徑
- 安裝NPM
完成設定
once、set 讀取、寫入
雖然之前介紹firebase讀取的方式有 once
、on
二種,
不過在後端的話,只能使用 once
方式,因為 on
在後端並不會有同步更新的效果。
1 | var fireData = admin.database(); //取得Firebase的database |
寫入方式一樣可以使用 set
、push
二種。
1 | var fireData = admin.database(); //取得Firebase的database |
then 設計思維
將資料新增至firebase後,可用 then
接著查看firebase的資料是否有成功新增。
1 | var fireData = admin.database(); //取得Firebase的database |
EJS 整合 Firebase
用 todolist 為例,說明如何將firebase上的待辦事項與後端整合,並呈現於網頁上。
範例
firebase資料
取得Firebase的todos資料,並將資料傳入index。
res.render 要放進 firebase function裡面,因為是用AJAX取得資料,所以要確保取得資料後,才進行傳遞參數的動作。
1 | var fireData = admin.database(); //取得Firebase的database |
取得傳入的資料 todolist
,使用ejs的forloop寫法,將資料渲染成HTML。
1 | <h1>待辦清單</h1> |
新增資料API
前端畫面輸入 待辦事項
後,點擊 送出
按鈕,此時會將資料 post 給 addTodo 路由,後端處理完後,再將結果傳送給前端更新畫面。
範例
1 | var fireData = admin.database(); //取得Firebase的database |
1 | <body> |
1 | var send = document.querySelector('#send'); |
刪除資料API
前端點擊 刪除
按鈕,此時會將刪除按鈕的 data-id 資料 post 給 removeTodo 路由,後端處理完後,再將結果傳送給前端更新畫面。
範例
1 | // 刪除邏輯 |
在每一個的INPUT(刪除按鈕)上,新增data-id屬性,紀錄firebase的Key值。
1 | <body> |
下例 前端all.js ,是針對 ul 進行監聽,進而判斷點擊的元素是否為INPUT(刪除按鈕),這樣就不用針對 n個的刪除按鈕 建立監聽事件,以達到優化的效果。
1 | var send = document.querySelector('#send'); |