2016-11-12 105 views
0

是否可以从Firebase中检索以逗号分隔的多个节点?Firebase:检索多个节点

例如,使用得到用户的nameimage属性:

/users/$USER_ID/name,image

,而不是下载的所有用户信息

+1

如果您愿意使用2个网络电话,您可以将孩子直接放入每个节点。 – Linxy

回答

1

Firebase SDK始终从数据库中检索完整节点。没有办法选择节点的一个子集。

如果你找到你想要的节点的子集,并且下载所有的节点都过于浪费,你应该模拟你的数据有一个额外的集合,其中只保留你想为每个用户的属性:

user 
    uid1 
    name: "TheUnreal" 
    image: "https://graph.facebook.com/1214076718653094/picture?type=large" 
    stackid: 3669981 
    lastquestionid: 40565750 
    uid2 
    name: "Frank van Puffelen" 
    image: "https://www.gravatar.com/avatar/12d378e6a9788ab9c94bbafe242b82b4?s=48&d=identicon&r=PG" 
    stackid: 209103 
    lastquestionid: 39984247 
users_names_images 
    uid1 
    name: "TheUnreal" 
    image: "https://graph.facebook.com/1214076718653094/picture?type=large" 
    uid2 
    name: "Frank van Puffelen" 
    image: "https://www.gravatar.com/avatar/12d378e6a9788ab9c94bbafe242b82b4?s=48&d=identicon&r=PG" 

使用此数据结构,您可以通过查询相应的顶级节点来选择是获取数据的子集还是完整的数据。像这样复制数据在NoSQL数据库中相当常见,在这些数据库中,您经常对数据进行建模以了解您的应用程序如何使用它。

+0

这是我想到的唯一方法,但缺点是每当用户更新他的图像或名称时更新这2个节点。如果我可以选择我想要的节点,则不需要额外的节点。我一直在考虑向Firebase发送功能请求,但它可能会鼓励以不同方式构建数据库结构 – TheUnreal

+0

*披露:我致力于Firebase *绝对[提出功能请求](https://firebase.google.com性/支撑性/接触/错误的功能/)。但是,即使我们决定在某个时候实施它,那对今天也无济于事。在Firebase等NoSQL数据库中复制数据是完全正常的,这也是它们扩展得很好的原因之一。 –

0

您可以检索使用类的节点。我这样做。你为什么不操纵返回的值,以便能够使用它。