我正在尝试在Firebase数据库中的多个子项中搜索特定值。例如,我有一个名为collections的数据库,它包含不同的集合。这些集合包含不同的植物,这些植物含有植物标签,其中包含我感兴趣的某些值。
My Firebase JSON is included here
如何搜索特定的植物标签,说“水”,然后在网页上显示具有植物标签“水”的多个植物的特定植物名称和图像?
我在想像
这样的东西file <- "./xxx.grib2"
### define the geographical coordinated to be extracted
lat_list <- c(36.8200, 43.2800, 52.7200)
lon_list <- c(85.8000, 87.3500, 95.8000)
var_list <- c("APCP", "DSWRF", "PRES")
lev_list = c("surface")
### read data
data <- ReadGrib(file, variable = var_list, levels = lev_list)
for (i in 1: length(lat_list)) {
cat("\n", " ... extracting point", i, "/", length(lat_list))
data_extract <- BuildProfile(data, spatial.average = F,
lat = lat_list[i], lon = lon_list[i])
}
或者是否会像在所有收藏品中对所有植物儿童进行迭代一样,看看他们是否有一个名为“水”的植物标签?
我也在Vue.js的这个项目上工作。
答案 0 :(得分:0)
可能有助于保持火层更浅,即。允许植物成为顶级文件,并为每个植物提供收集和植物标签的子属性。这应该允许orderbyChild通过他们的子植物标签=水来订购所有顶级植物。例如。
答案 1 :(得分:0)
正如Cuttsy27提出的那样,您可以对数据进行非规范化。实现您的需求的一个好方法是,除collections
节点外,还有一个额外的主节点plantTags
,并为每个plantTag提供一个子节点,其中包含具有所需信息的植物子节点:
- collections
- ....
- plantTags
- water
- 1082 <- plantID
- plantName: "........"
- plantPic: "xxxxxxxx.png"
- 362
- plantName: "........"
- plantPic: "xxxxxxxx.png"
- propagate
- 362
- plantName: "........"
- plantPic: "xxxxxxxx.png"
- 876
- plantName: "........"
- plantPic: "xxxxxxxx.png"
以这种方式查询具有给定标签的所有植物将非常容易。
例如&#34; pure&#34; JavaScript的:
var tagToQuery = 'water';
var ref = database.ref('/plantTags/' + tagToQuery);
ref.once('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var childData = childSnapshot.val();
console.log(childData.name)
// ...
});
});
为了保持两个节点同步,请使用update
方法(此处记录:https://firebase.google.com/docs/database/web/read-and-write#update_specific_fields),该方法允许同时写入节点的特定子节点&#34; < / p>
(简单)您的数据结构示例:
var updates = {};
updates['/collections/0/plants/0'] = ... ;
updates['/plantTags/water/362] = ...;
updates['/plantTags/propagate/362] = ...;
return firebase.database().ref().update(updates);
答案 2 :(得分:0)
不要使用Array
- &gt;请改用Dictionary
。无法在Array
中执行搜索。而不是 0,1,2 在任何地方都使用自动生成键。
然后你可以查询
集合 - &gt; collectionId - &gt;植物 - &gt; yourQuery
或重新定义您的数据库结构,就像您可以获取此内容一样。使用当前数据库,在知道要到达节点的collections
(0, 1 or else)
和plants
(0, 1 or else)
的每个索引之前,无法获取数据。