2016-07-27 14 views
1

我需要從查詢中訪問生成的對象(鍵:值)。這裏是我的查詢:如何從equalTo(唯一)查詢訪問單個子查詢,而不是forEach

root_ref.child('List_Groups').orderByValue().equalTo(group_name).once('value') 
.then(function(snapshot){... 

我查詢的數據是這種形式:

List_Groups 
    uniqueKey: value, 
    uniquekey: value, 
    ... 

查詢的目的是要找到與equalTo參數(group_name)相關聯的唯一關鍵。我打算使用orderByValue().equalTo()來獲取單個結果,因爲group_name是唯一的。但是,返回快照的形式爲:

List_Groups 
    uniqueKey: group_name 

所以snapshot.key回報List_Groupssnapshot.val()回報[object Object][object Object]中的密鑰是我需要訪問的。

我已經使用forEach獲得密鑰,但forEach似乎沒有必要用於此任務。有另一種方法嗎?

snapshot.child().key將是理想的,但是這顯然不起作用,因爲child()需要子路徑作爲參數。另外,因爲我正在尋找鑰匙,所以我不知道鑰匙,因此不能只是snapshot.val()[key]

編輯: 這是console.log(JSON.stringify(snapshot.val()))結果:

{"-KNgrFphjMX0vlMG2l7G":"newgroup"}

+0

@theblindprophet糾正我,如果我錯了,但不'子(路徑)'需要的路徑是一個關鍵的?在我的情況下'group_name'是值,我不知道它是關鍵。所以路徑將是'List_Groups/key'。 – skwny

+0

像'console.log(JSON.stringify(snapshot.val()))'一樣打印'snapshot.val()'並在問題中發佈。 – theblindprophet

+0

@theblindprophet更新。 – skwny

回答

0

使用此:

var theKey = Object.keys(snapshot.val())[0]; 

Object.keys()返回的對象,並在你的情況下,所有的按鍵陣列將有隻有一個關鍵,所以[0]將獲得第一(也是唯一)。

CodePen:http://codepen.io/theblindprophet/pen/GqGQaJ

+0

那是完美的。謝謝,我從來沒有想到這一點。 – skwny