Firebase:查找具有特定键值的子名称

时间:2017-07-23 20:52:16

标签: javascript firebase firebase-realtime-database

您如何返回特定键值所在的孩子的名字?

使用Firebases中的示例' docs ...

// Assume we have the following data in the Database:
{
  "name": {
    "first": "Ada",
    "last": "Lovelace"
  }
}

我将如何返回" name"只使用键值" Ada"在我的代码中?

1 个答案:

答案 0 :(得分:0)

Firebase实时数据库没有"返回"任何东西。您查询它,它会生成与您的查询匹配的结果。这不是一个查询,它只为您提供某些查询中匹配数据的某个键的名称。当您在某个位置进行查询或收听时,您最终会得到一个可以检查的DataSnapshot。该快照将包含与您的查询匹配的整个结构。

最重要的是,在文档的情况下,"首先"甚至不能保证是独一无二的。可能有许多位置具有第一个=" Ada"。如果您对此进行查询,则会在查询结果中获得所有条记录。然后由客户端过滤所有这些以找到正确的。

如果您想假设,在该示例中,名字(例如" Ada")实际上是唯一的,并且您希望使用它来获取最小的快照,只有存储它的密钥,您可以将第一个名称字符串的反向映射维护回键的字符串。您必须在数据库的不同位置维护该映射。所以如果你认为" Ada"实际上必须是同一位置的一组数据中的唯一子值,您可以在数据库中拥有另一个维护此反向映射的位置:

"first_names": {
    "Ada": "name"
}

然后你可以简单地查询位置" / first_names / Ada"包含值" name"。