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

时间:2017-03-04 22:01:03

标签: 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= data.val();
  }
});
return memberKey;

它在控制台中记录这个很好,因为我想要的数据就在那里。

Object {-Ke2CyV2BJ5S3_7qcQj5: true}

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

似乎非常微不足道。感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

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

由于可以安全地假设您无法预测该密钥是什么,因此就我所知,没有一种直接的方法可以做到这一点。从好的方面来说,有许多可行的方法可以做到这一点。重要的是你了解上述内容。

您没有直接访问此密钥的方式,并希望可能表明您应该重新考虑模型的结构,如果可能的话

我将告诉你如何“获取”密钥的这个例子,主要是为了说明它与你正在使用的路径之间的关系:

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

答案 1 :(得分:1)

只需使用

const key = object['$key'];