从 Firebase 获取数据,其中包含 'array' 中的所有指定项目
Get data from Firebase which contains all specified items in 'array'
我有这样的结构:
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 的所有帖子。例如 'web' 和 'school'。结果应该由 post1 和 post2。
仅使用 firebase 就可以实现这一点,还是我应该获取他的所有帖子然后过滤它们?
无论如何,您都必须获取整个 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
遍历所有 post,然后将 post 的名称保存在 key
中,并将数据保存在 childData
中。
childData
看起来像:
- text: 'Lorem ipsum dolor...'
- tags
- web: true
- design: true
- school: true
然后使用常规 JavaScript 遍历 tags
对每个循环进行一些检查。如果找到所有标签或您要检查的任何内容,我建议将 key
存储在数组中。
请记住,Firebase 调用是异步的,数据在 .once
调用后并不总是准备就绪。在回调中执行所有操作。
我有这样的结构:
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 的所有帖子。例如 'web' 和 'school'。结果应该由 post1 和 post2。 仅使用 firebase 就可以实现这一点,还是我应该获取他的所有帖子然后过滤它们?
无论如何,您都必须获取整个 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
遍历所有 post,然后将 post 的名称保存在 key
中,并将数据保存在 childData
中。
childData
看起来像:
- text: 'Lorem ipsum dolor...'
- tags
- web: true
- design: true
- school: true
然后使用常规 JavaScript 遍历 tags
对每个循环进行一些检查。如果找到所有标签或您要检查的任何内容,我建议将 key
存储在数组中。
请记住,Firebase 调用是异步的,数据在 .once
调用后并不总是准备就绪。在回调中执行所有操作。