2016-07-27 46 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