[英]Filtering firebase data and ordering results
我正在編寫一個使用Firebase作為數據庫的HTML / JavaScript應用程序。
我的數據結構如下:
steps/
- GUID
-- tripId
-- name
-- description
-- order
-- launchDate
我想從TripId匹配特定值(傳遞給變量)的步驟中選擇任何項目。 然后,我想按降序對結果進行排序 。
我更習慣於T-SQL類型語法,因此在實時數據庫的世界中變得困惑。
這是我的代碼現在的樣子的一小段。
var steps = function readSteps(format, tripId) {
var stepsRef;
stepsRef = firebase.database().ref('steps/');
stepsRef.orderByChild('order').on('value', function (response) {
// DO SOME LOGIC HERE WITH 'response' DATA
});
}
我不知道如何過濾這些結果,也看不到如何輕松地進行降序排序。 order是一個整數。
要獲取訂單42的所有步驟,您可以查詢:
stepsRef = firebase.database().ref('steps/');
stepsRef.orderByChild('order').equalTo(42).on('value', function (snapshot) {
snapshot.forEach(function(stepSnapshot) {
console.log(stepSnapshot.key, stepSnapshot.val());
});
});
但是,如果您總是要查找訂單的步驟,則最好對JSON進行不同的建模:
orderSteps
order42
step1: ...
step2: ...
step3: ...
order43
step1: ...
step2: ...
這使您無需查詢即可檢索訂單的步驟:
stepsRef = firebase.database().ref('orderSteps/order42');
stepsRef.on('value', function (snapshot) {
snapshot.forEach(function(stepSnapshot) {
console.log(stepSnapshot.key, stepSnapshot.val());
});
});
如果你也想,訂單中的子屬性這樣的結果,它會變成:
stepsRef.orderByChild("field").on('value', function (snapshot) {
我建議為SQL開發人員閱讀NoSQL數據建模並查看Firebase,以了解有關在NoSQL數據庫中對數據建模的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.