【发布时间】:2016-08-11 05:16:08
【问题描述】:
如何在不使用快照的情况下获取 Firebase 对象的密钥?
我已经完成了以下研究。
使用代码:
var ref = new Firebase('https://johnsoncompany.firebaseio.com/people')
var firstPerson = ref.orderByChild("first").limitToFirst(1);
var key = $firebaseObject(firstPerson);
..我得到下面的对象:
{
"5":{
"first":"Jennifer",
"last":"Robert",
"mobile":"121 364 135",
}
}
Firebase 为我的对象提供了键“5”,因为数据包含在值数组中。这是第 6 个值。
挑战在于,为了获得值“Jennifer”,我必须知道键是“5”。
然后我将使用代码:
var firstPerson = $firebaseObject(ref.child('5'))
var firstName = firstPerson.first; //Returns Jennifer
我知道我可以使用下面的代码来获取密钥“5”:
ref.orderByChild("first").limitToFirst(1).once("child_added", function(snapshot) {
alert(snapshot.key());
});
挑战在于它在返回密钥之前存在延迟。这会导致应用出现故障。
有没有办法在没有快照的情况下获得密钥
ref.orderByChild("first").limitToFirst(1).key(); //This doesn't work
【问题讨论】:
-
如果不异步加载数据,就无法从 Firebase(或任何基于云的数据库)读取密钥。但这一切都取决于您为什么要检索该特定对象。如果不知道它是第 5 项,那么它是否基于另一个属性。例如,如果您想根据用户的号码获取用户,您可以
ref.orderByChild('mobile').equalTo('121 364 135').on(...
标签: arrays json firebase firebase-realtime-database