这个看似简单的问题肯定与许多问题重复,所以我为此道歉。当它被标记为这样时,不会被冒犯......但我还没有找到一个明确,直接和现代的答案,这似乎与我期望的一样。
鉴于"第一项",我如何返回" subItems"匹配该标题的对象的数组?
此外,如何将新的子项目推送到该数组(如果我在编写而不是阅读时应该以某种不同的方式定位该数组)
这个的背景是"项目"是顶级db.ref('items')
答案 0 :(得分:2)
要按属性查找项目,您需要运行对该属性进行排序和过滤的查询。所以在你的情况下:
var ref = firebase.database().ref("items");
var query = ref.orderByChild("title").equalTo("Item One");
query.once("value", function(snapshot) {
snapshot.forEach(function(item) {
console.log(item.key); // -L8...EMj7P
console.log(item.child("subItems").val()); // logs the sub items
// console.log(item.ref.child("subItems").push().set(...)); // adds a sub item
});
});
请注意,嵌套数据类型是Firebase数据库中的反模式,因为它通常会在以后导致问题。更惯用的方法是使用两个顶级列表(例如items
和subItems
)然后使用相同的键:
items: {
-L8...EMj7P: {
title: "Item One"
}
},
subItems: {
-L8...EMj7P: {
...
}
}