Firebase 學習記錄
11 May 2023sql
因為網路上的教學有些有點舊,所以整理了一篇 firebase 學習記錄。
- 建立專案,參考這篇
- 寫入資料(不覆蓋路徑下舊有的資料,但為了區別所以會自動產生一個亂數的key)
function write(groupid, userid, username, message) { push(ref(db, '/group/'+ groupid), { userid: userid, username: username, message: message, timestamp: Date.now() }) }
- 讀取資料,存入 itemList 後回傳
function read(groupid) { const itemList = [] onValue(ref(db, '/group/'+groupid), (snapshot) => { snapshot.forEach(function (snapshot) { var obj = snapshot.val(); itemList.push(obj) }) }, { onlyOnce: true }); return itemList }
- 以覆蓋方式寫入資料(重置資料庫)
function resetDB() { set(ref(db, '/group'), {}); }
完整程式碼:
import { initializeApp } from "firebase/app";
import { getDatabase, ref, set, push, onValue} from "firebase/database";
const firebaseConfig = {
apiKey: "你的 api key",
authDomain: "你的 authDomain",
databaseURL: "你的 db URL",
projectId: "你的 projectId",
storageBucket: "你的 storageBucket",
messagingSenderId: "你的 messagingSenderId",
appId: "你的 appId",
measurementId: "你的 measurementId"
};
// Initialize Firebase
const app = initializeApp(firebaseConfig);
const db = getDatabase(app);
export function resetDB() {
set(ref(db, '/group'), {});
}
export function write(groupid, userid, username, message) {
push(ref(db, '/group/'+ groupid), {
userid: userid,
username: username,
message: message,
timestamp: Date.now()
})
}
export function read(groupid) {
const itemList = []
onValue(ref(db, '/group/'+groupid), (snapshot) => {
snapshot.forEach(function (snapshot) {
var obj = snapshot.val();
itemList.push(obj)
})
}, {
onlyOnce: true
});
return itemList
}