如何获取 Firebase 对象的密钥
How to get the key of a Firebase Object
如何在不使用快照的情况下获取 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());
});
挑战在于 returns 密钥之前存在延迟。这会导致应用程序出现故障。
有没有办法不用快照就可以得到密钥
ref.orderByChild("first").limitToFirst(1).key(); //This doesn't work
我知道您现在可能已经找到了解决问题的方法,但这是我用来检索对象键的方法。然后我使用相同的键 运行 另一个查询(过滤器)。
itemsRef.on('value', (snap) => {
var items = [];
snap.forEach((child) => {
items.push({
active: child.val().active,
profile: child.val().profile,
image: child.val().image,
description: child.val().description,
title: child.val().title,
_key:child.key, //<--------------this is where I get the key
});
});
this.setState({
dataSource: this.state.dataSource.cloneWithRows(items),
});
});
你也可以使用展开运算符来赋值:
itemsRef.on('value', (snap) => {
var items = [];
snap.forEach((child) => {
items.push({
_key: child.key,
...child.val()
});
});
});
在无需维护代码的情况下更轻松地向数据添加新属性。
我找到了解决方法,你可以看看它是否有帮助
ArticlesRef.orderByChild('title')
.equalTo('one2three')
.once('value')
.then(function(snapshot){
let value = snapshot.val()
if(value){
let key = Object.keys(value)[0];
//since the value is an object you can get the key given by firebase
//you can add more code});
如何在不使用快照的情况下获取 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());
});
挑战在于 returns 密钥之前存在延迟。这会导致应用程序出现故障。
有没有办法不用快照就可以得到密钥
ref.orderByChild("first").limitToFirst(1).key(); //This doesn't work
我知道您现在可能已经找到了解决问题的方法,但这是我用来检索对象键的方法。然后我使用相同的键 运行 另一个查询(过滤器)。
itemsRef.on('value', (snap) => {
var items = [];
snap.forEach((child) => {
items.push({
active: child.val().active,
profile: child.val().profile,
image: child.val().image,
description: child.val().description,
title: child.val().title,
_key:child.key, //<--------------this is where I get the key
});
});
this.setState({
dataSource: this.state.dataSource.cloneWithRows(items),
});
});
你也可以使用展开运算符来赋值:
itemsRef.on('value', (snap) => {
var items = [];
snap.forEach((child) => {
items.push({
_key: child.key,
...child.val()
});
});
});
在无需维护代码的情况下更轻松地向数据添加新属性。
我找到了解决方法,你可以看看它是否有帮助
ArticlesRef.orderByChild('title')
.equalTo('one2three')
.once('value')
.then(function(snapshot){
let value = snapshot.val()
if(value){
let key = Object.keys(value)[0];
//since the value is an object you can get the key given by firebase
//you can add more code});