Node.js 的 30 天學習日記--第二十五天

Node.js 學習第二十五天

要把 firebase 跟 node 的 express 做結合了。

如果在看的過程中有任何錯誤歡迎寫 E-MAIL: pp840405@gmail.com 提醒我錯誤。


Express 整合 Firebase 流程

首先去下載這支檔案node-expressFirebase-init,這支檔案為六角學院擁有,再來可以去看這支檔案的 package 檔案資料有安裝哪些套件,再來去 firebase 新增一個專案並且去設定 -> 服務帳戶 複製 SDK 設定程式碼貼上 app.js 檔案與下載產生新的私密金鑰並放在 node-expressFirebase-init 資料夾內。
firebase

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var express = require('express');
var app = express();
var engine = require('ejs-locals');
var bodyParser = require('body-parser');
//firbase 設定
var admin = require("firebase-admin");
//路徑更改成自己的私密金鑰
var serviceAccount = require("./expresssdemo-firebase-adminsdk-9pn15-8407d41fa7");

admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://expresssdemo.firebaseio.com"
});

app.engine('ejs',engine);
app.set('views','./views');
app.set('view engine','ejs');
//增加靜態檔案的路徑
app.use(express.static('public'))

// 增加 body 解析
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}))

//路由
app.get('/',function(req,res){
res.render('index');
})
// 監聽 port
var port = process.env.PORT || 3000;
app.listen(port);

完成後先去安裝 package 設定的套件再安裝 firebase 的套件, firebase-admin 。

1
2
npm install
npm install firebase-admin --save


Firebase - once、set 寫入讀取資料

複習前面 firebase ,先再 firebase 新增 todos 子節點然後再新增 content:”hello” 的資料。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var express = require('express');
var app = express();
var engine = require('ejs-locals');
var bodyParser = require('body-parser');
//firbase 設定
var admin = require("firebase-admin");
var serviceAccount = require("./expresssdemo-firebase-adminsdk-9pn15-8407d41fa7");

admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://expresssdemo.firebaseio.com"
});

var firdata = admin.database();
firdata.ref('todos').onec('value',function(snapshot){
console.log(snapshot.val());
})

app.engine('ejs',engine);
app.set('views','./views');
app.set('view engine','ejs');
//增加靜態檔案的路徑
app.use(express.static('public'))

// 增加 body 解析
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}))

//路由
app.get('/',function(req,res){
res.render('index');
})

// 監聽 port
var port = process.env.PORT || 3000;
app.listen(port);


Firebase - then 設計思維

把資料寫入後主動回傳資料確定有寫入來做任何事情。

1
2
3
4
5
6
7
//由於一些設定過於太長,所以這邊不顯示設定,
var firdata = admin.database();
firdata.ref('todos').set({'title':'hello,tom'}).then(function(){
firdata.ref('todos').once('value',function(snapshot){
console.log(snapshot.val());
})
})

結語

開始做結合了,前面學習有結果了不用再枯燥的練習了,有任何問題歡迎寫 MAIL: pp840405@gmail.com 一起共同討論。