我在从Firebase实时数据库查询嵌套数据时遇到问题。
给出以下示例数据结构:
"crossing":
"1346":
"data1": "value"
"data2": "value"
"projectName": "PN-1"
"1562":
"data1": "value"
"data2": "value"
"projectName": "PN-1"
"1933":
"data1": "value"
"data2": "value"
"projectName": "PN-2"
让我们假设这个集合将有数百个孩子。此外,在执行查询之前,ID是随机的和未知的。如图所示,每个交叉点都有几个其他值。
首先,我必须列出键以给定值开始的所有交叉。例如,如果我搜索1,我希望得到这个简单例子中的所有交叉。
此代码段解决了这个问题。虽然,我仍然不确定这是否是实现这一目标的最佳方式。
firebase
.database()
.ref("crossing")
.orderByKey()
.startAt(self.searchedKey)
.endAt(self.searchedKey + "\uf8ff")
.once("value", function(snapshot) {
if (snapshot.val()) {
console.log(snapshot.val());
}
});
我的主要问题是,现在我必须列出所有projectName值以给定值开头的交叉点。
然而,我不能为此撰写适当的查询。我不能使用. orderBychild()函数,因为子键(ID)未知。
我无法从集合中查询所有交叉点,并迭代前端的所有元素,因为稍后这个对象将非常庞大,有很多交叉点。在我看来,某种秩序仍然是必须的。
Firebase实时数据库只能对每个子节点的一个值进行排序/筛选。它可以是每个节点的键(orderByKey()
),它的值(orderByValue()
),也可以是每个节点下已知路径上单个属性的值(orderByChild(“path/to/property”)
)。您可以使用其中任何一个,但只能对任何查询使用其中的一个。
如果要筛选多个属性(作为AND),通常可以将要筛选的值组合到单个(合成)属性中。例如,您还可以(也可以)将属性中每个节点的键添加到:“projectName_key”:“PN-1_1346”
中,然后对该属性进行排序/筛选。
有关此方法和其他方法的更长示例,请参阅我的答案:Firebase中基于多个where子句的查询
我正在尝试运行Firebase实时数据库查询,以根据从根嵌套在第4级的值过滤数据。下面是数据结构,我的查询是: 但是这个查询没有返回任何数据。我已经启用了索引,但没有任何警告。我还将我的查询改为< code >。order by child(' info status '),但没有结果。 如果我将ref设置为低于一个级别,即,那么它会成功获得结果。但是在我的场景中,我没有可以在中使用的用户ID。
我有一个firebase数据库,员工数据的结构如下。我还有一个用户表,它具有'Company ID'属性。每次用户登录时,我都希望获取与用户“公司ID”匹配的所有员工。是否有可能实现这使用firebase数据库规则或我必须写一些查询。
我已经更改了数据库,以便为所有条目提供唯一的密钥。 我是斯佩萨。班 这段代码工作正常,直到我有了没有唯一密钥的“旧”数据库。现在我不得不面对这些陈述: 问题是我不知道如何有一个指向键的参考。特别是,变量“选项”不是“Spesa”类,但它是null。如果我没有适配器,我会做为(Datasnapshot ds: datasSnapshot.get儿童),然后进入为我将使用getValue,但在这种情况
我有几个关于Azure Key Vault的问题,我需要一些技术帮助:链接https://docs.microsoft.com/en-us/Azure/key-vault/general/overview指出,“机密和密钥由Azure保护,使用行业标准算法、密钥长度和硬件安全模块(HSMs)。使用的HSMs经过联邦信息处理标准(FIPS)140-2级验证”。 我想确认这是否适用于秘密,就像适用于密
3.移除值事件侦听器和脱机的区别。
在firebase中给定下面的数据结构,我想运行一个查询来检索博客'EFG'。我现在不知道用户id。