我通过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
”?
似乎非常微不足道。感谢您的帮助!
答案 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'];