如何在angularFire2中获取关联对象的对象键?

如何在angularFire2中获取关联对象的对象键?,angular,angularfire2,Angular,Angularfire2,我通过userkey查询数据库,以查找是否存在关联的对象: let url=`/userMember/${userKey}` const userMemberRef = this.af.database.object(url, { preserveSnapshot: true }); userMemberRef.subscribe(data => { if(data.val()!=null) { console.log(data.val()); memberKey=

我通过userkey查询数据库,以查找是否存在关联的对象:

let url=`/userMember/${userKey}`

const userMemberRef = this.af.database.object(url, { preserveSnapshot: true });

userMemberRef.subscribe(data => {
  if(data.val()!=null) {
    console.log(data.val());
    memberKey= data.val();
  }
});
return memberKey;
它将此记录在控制台中,这很好,因为我想要的数据就在那里

Object{-Ke2CyV2BJ5S3_7qcj5:true}

但是如何返回子键值“
-Ke2CyV2BJ5S3_7qcQj5

似乎很琐碎。我感谢你的帮助

data.val()
实际上引用了
userKey
的值。由于
userMember/${userKey}
不是键-值对的路径,而是对象,因此
userKey
的“值”就是该对象。如果要将该对象的属性的键指定给变量,则需要映射到该属性的键

由于可以安全地假设您无法预测该密钥将是什么,所以据我所知,没有一种简单的方法可以做到这一点。从好的方面来看,有许多可以想象的方法可以做到这一点。重要的是你要理解上面的内容

事实上,您没有一种直接的方法来访问此密钥,并且希望这样做,这可能表明您应该重新考虑模型的结构(如果可能的话)

我将向您介绍如何“获取”键的示例,主要是为了说明它与您使用的路径的关系:

this.af.database.object(`userMember/${userKey}`)
.subscribe(member => console.log(Object.keys(member)[0]));
data.val()
实际上引用了
userKey
的值。由于
userMember/${userKey}
不是键-值对的路径,而是对象,因此
userKey
的“值”就是该对象。如果要将该对象的属性的键指定给变量,则需要映射到该属性的键

由于可以安全地假设您无法预测该密钥将是什么,所以据我所知,没有一种简单的方法可以做到这一点。从好的方面来看,有许多可以想象的方法可以做到这一点。重要的是你要理解上面的内容

事实上,您没有一种直接的方法来访问此密钥,并且希望这样做,这可能表明您应该重新考虑模型的结构(如果可能的话)

我将向您介绍如何“获取”键的示例,主要是为了说明它与您使用的路径的关系:

this.af.database.object(`userMember/${userKey}`)
.subscribe(member => console.log(Object.keys(member)[0]));
只用

const key = object['$key'];
只用

const key = object['$key'];

这里,
subscribe
是异步的,因此在分配值之前返回
memberKey
。那么,获得该值的解决方案是什么?我以为订阅会打开它。我需要使用方法所需的值展开。在这里,
subscribe
是异步的,因此在分配值之前返回
memberKey
。那么,获得该值的解决方案是什么?我以为订阅会打开它。我需要使用方法所需的值展开。适用于我的语法是
console.log(Object.keys(member.val())[0])我假设是因为您使用的是
preservesapshot
。您是否尝试在不使用它的情况下记录密钥?对我有效的语法是
console.log(Object.keys(member.val())[0])我假设是因为您使用的是
preservesapshot
。你有没有试着在没有它的情况下记录钥匙?砰!你是老板:这是我最优雅的解决方案!你是老板:这是最优雅的解决方案