2015-11-19 146 views
1

再說說我的火力點數據結構看起來像下面這樣的畫面:獲取基於兒童父母火力地堡的價值

enter image description here

我想查詢基於內settingscustomerNumber客戶。

我最近一次嘗試,我已經試過如下:

var number = register.number; 

var ref = new Firebase(fbUrl+'/clients/'); 

ref.orderByChild("settings").orderByChild("customerNumber").equalTo(number).on("child_added", function(snapshot) { 
    console.log(snapshot.key()); 
}); 

但顯然你不能同時採用兩種orderByChild()功能。

那麼我該怎麼做呢?我已經建立了這個項目的方式來改變我的結構,所以這不是一個可行的選擇或解決方案。

我想根據父數據結構設置中的customerNumber匹配返回整個父母。

+0

嘗試'ref.orderByChild( 「設置/ customerNumber之」)equalTo(數量)。在(...'。 。看到這篇博文我們介紹了這個功能:https://www.firebase.com/blog/2015-09-24-atomic-writes-and-more.html –

+0

@FrankvanPuffelen我這樣做的時候出現這個錯誤:錯誤:Query.orderByChild失敗:第一個參數是一個無效的鍵:「settings/customerNumber」。是否需要更新我的firebase版本? – moevans

+0

我更新了我的firebase版本,現在有了:'ref.orderByChild(「settings/customerNumber「)。equalTo(number).on(」value「,function(snapshot)){ console.log(snapshot.val()); });'這個控制檯每次都是空的。 – moevans

回答

0

你應該「不想展數據」作爲火力地堡問我們自己的文檔中要做到:structuring data in firebase

你可以認爲,該custumerNumber與Firebasekey在客戶端映射的第二索引

+0

閱讀倒數第二行的問題。 – moevans

+0

對不起,我沒有看到這個:'那麼我會怎麼做?我已經建立了這個項目太多的方法來改變我的結構,所以這不是一個可行的選擇或解決方案。「這是我的壞 – ilyass

+1

@ilyass:一般來說,最好將數據變平,但我認爲這並不適用於此。嵌套設置可作爲命名鍵尋址,與列表列表(列表列表...)相比,問題更少。 –

1

我不知道爲什麼我留下的評論不適合你。這裏我只是用重現它的片斷:

var ref = new Firebase('https://mine.firebaseio.com'); 
ref.child('clients') 
    .orderByChild('settings/customerNumber') 
    .equalTo('1234567890') 
    .once('value', function(snapshot) { 
    console.log(snapshot.val()); 
    }); 

看到這個jsbin:http://jsbin.com/towewegapa/edit?js,console