Node.js 學習第十二天
今天是學習搜尋規則,雖然是使用 firbabse 的函式庫但邏輯都是大同小異所以學了之後對其它的函式庫可以更快上手。
如果在看的過程中有任何錯誤歡迎寫 E-MAIL: pp840405@gmail.com 提醒我錯誤。
startAt 、 endAt 、 equalTo - 搜尋區間規則 (上)
startAt - 搜尋你設定以上的值
endAt - 搜尋你設定以下的值
equalTo - 搜尋你設定等於的值
這三個是搜尋區間規格的函式。
下面是用前一天的範例修改值後再去做新增,在你要排序的資料( orderByChild )後面在新增函式。
startAt 、 endAt 可以用在一起, equalTo 就要單獨使用了。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
36var people = {
"mike": {
"length" : 12.5,
"weight": 5000,
"mail":sas@gmail.com
},
"casper": {
"length" : 9,
"weight" : 4500,
"mail":qwe@gmail.com
},
"bob": {
"length" : false,
"weight" : 3500,
"mail":zxc@gmail.com
},
"john": {
"length" : 9,
"weight" : 3500,
"mail":rty@gmail.com
}
,
"josh": {
"length" : 9,
"weight" : 2500,
"mail":uio@gmail.com
}
};
firebase.database().ref('people').set(people);
peopleRef.orderByChild('weight').startAt(2500).endAt(4000).once('value',function(snapshot){
snapshot.forEach(function(item){
//.key 在這是可以撈出子目錄
console.log(item.key);
console.log(item.val());
})
})
如果收尋字串後其它也可以用。
下面範例是要搜尋特定的 mail 。1
2
3
4
5
6
7peopleRef.orderByChild('mail').equalTo('sas@gmail.com').once('value',function(snapshot){
snapshot.forEach(function(item){
//.key 在這是可以撈出子目錄
console.log(item.key);
console.log(item.val());
})
})
limit - 限制筆數
如果資料庫太過於龐大,如何去設定只有 10 筆或 20 筆資料顯示在網頁上面,就要使用 limit 的方式去撈出資料,那就要使用 firebase 的函式庫了。
limitToFirst (值) - 撈出第幾筆資料
limitLast (值) - 撈出最後幾筆資料
可以搭配搜尋區間規則使用。
下面範例就是只撈出符合資料的 2 筆。1
2
3
4
5
6
7peopleRef.orderByChild('weight').startAt(2500).limitToFirst(2).once('value',function(snapshot){
snapshot.forEach(function(item){
//.key 在這是可以撈出子目錄
console.log(item.key);
console.log(item.val());
})
})
結語
今天一樣學的是規則,搭配前一天學的規則去做使用,就可以去做一些蒐尋功能做使用了。
有任何問題歡迎寫 MAIL: pp840405@gmail.com 一起共同討論。