Firebase 語法整理

ref路徑

1
2
import firebase from "@/config/firebaseConfig.js";
firebase.database().ref('schedules/');

child

讀取 on,once

1
2
3
4
5
6
const teacherLists = ref<any>({})
const getTeachers = () => {
teachers.once('value', (snapshot: { val: () => any; }) => {
teacherLists.value = snapshot.val();
})
}

讀取 on:程式會在背景待命,一旦資料變動的時候,就會重新印出新的結果,即時更新訊息的聊天室

1
2
3
4
myData.on('value', (snapshot)=>{
var data = snapshot.val()
console.log(data)
})

新增 set:直接取代當前路徑中的所有資料(具有破壞性)

1
2
3
4
5
let query = {
id: Math.floor(Date.now() / 1000),
title: scheduleForm.value.title,
}
firebase.database().ref('schedules/' + query.id).set(query);

新增 push:產生了一組隨機key值

1
2
var todos = db.ref('todos');
todos.push({content:'去看電影'});

update:只修改相關資料,不會直接取代路徑中的所有資料

1
2
3
4
5
6
7
8
9
10
11
var Data = {
name: name,
mail:mail,
phone:phone
}
// 分別將資料寫進資料庫'user/'底下
// 也會同時在'uses/'下開啟一個name的子節點,並且寫入相同的data
var updates = {};
updates['/users/' + newPostKey] = postData;
updates['/users/' + name + '/' + newPostKey] = postData;
return firebase.database().ref().update(updates);

remove

1
2
3
const toDelete = (item: any) => {
teachers.child(key).remove();
}

orderByChild 排序

orderByChild()依據資料某一個特定子節點來做排序
orderByKey 排序:不需要帶參數,資料少的排前面,資料大排後面
orderByValue 排序:不需要帶參數,升冪值進行排序

過濾條件:startAt, endAt, equalTo

startAt:比如說我們想要過濾掉,體重60公斤以下的人,可以使用startAt(60)。

1
2
3
4
5
userRef.orderByChild("weight").startAt(60).once("value",  (snapshot)=> {
snapshot.forEach( (item)=> {
console.log(item.val());
});
});

過濾條件endAt:過濾掉,體重80公斤以上的人,可以使用startAt(50)。

1
2
3
4
5
userRef.orderByChild("weight").endAt(80).once("value", (snapshot)=> {
snapshot.forEach(function (item) {
console.log(item.val());
});
});

過濾條件equalTo:等於:體重等於40公斤的人時,就要使用equalTo(50),想要知道是誰的話,可以加上key (item.key)

1
2
3
4
5
6
userRef.orderByChild("weight")
.equalTo(40).once("value", (snapshot)=> {
snapshot.forEach( (item)=> {
console.log(item.val(), item.key);
});
});

limitToFirst, limitToLast 等與限制筆數

limitToFirst:只需要其中第一筆資料,體重70大於公斤的會員第一筆資料

1
2
3
4
5
userRef.orderByChild("weight").startAt(50).limitToFirst(1).once("value",  (snapshot)=> {
snapshot.forEach( (item)=> {
console.log(item.val());
});
});

limitToLast:從最尾端起算的幾筆