簡體   English   中英

篩選Firebase數據和訂購結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM