2016-05-05 51 views
2

所有指定项目获取数据我有这样的结构:从火力地堡包含在“阵”

users 
- user1 
    - name: 'Bob' 
    - age: 25 
    - posts 
     - bobPost1 
      - text: 'Lorem ipsum...' 
      - tags 
      - web: true 
      - programming: true 
      - school: true 
     - bobPost2 
      - text: 'Lorem ipsum dolor...' 
      - tags 
      - web: true 
      - design: true 
      - school: true 
     - bobPost3 
      - text: 'Sample text...' 
      - tags 
      - web: true 
      - programming: true 

我想通过标签来检索所有Bob的帖子。例如“网络”和“学校”。结果应该通过post1和post2。 是否可以通过firebase实现此目标,还是应该获取所有帖子然后过滤它们?

回答

1

无论如何,您都必须获得整个post的数据快照,但幸运的是,这并不是很多需要担心的数据。

var ref = new Firebase("https://docs-examples.firebaseio.com/users/user1/posts"); 
ref.once("value", function(snapshot) { 
    // Gets everything under "posts", iterates each post 
    snapshot.forEach(function(childSnapshot) { 
     // "bobpost1", "bobpost2", etc 
     var key = childSnapshot.key(); 
     // Data underneath bobpost# 
     var childData = childSnapshot.val(); 

     // Iterates through tags 
     for(i in childData.tags) { 
      // Do/check something 
      // If post contains all specified tags, then store key somewhere 
     } 
    }); 
}); 

您可以通过使用forEach所有迭代后,然后保存里面key后的名称和内部childData数据。

childData看起来像:

- text: 'Lorem ipsum dolor...' 
- tags 
    - web: true 
    - design: true 
    - school: true 

然后通过tags为每个循环做一些检查常规的JavaScript迭代。我建议如果所有的标签被找到或者正在检查的东西都存储在一个数组中的key

请记住,Firebase调用是异步的,并且在调用.once之后数据不会始终准备就绪。执行回拨中的所有操作。

Firebase | forEach