我目前正在将Firebase实时实时数据库转换为使用新版本Firestore。
我想按键找到一份文件。以前,在Firebase实时我可以这样做:
getSingleRouteById (key) {
const ref = firebaseDb.ref('/data/')
// now search for data with that key several nested layers down
return ref.child(key)
.once('value')
.then((snapshot) => {
return snapshot.val()
})
}
阅读新文档后,我找不到在Firestore中实现此目的的方法。请注意我只知道密钥,因此我需要搜索所有文档,而不知道实际的路径/参考。
答案 0 :(得分:1)
没有本地方法可以做到这一点。问题的一部分在于,跨多个路径的密钥没有唯一性,因此在查找密钥时会发现密钥'在/data/
中,您可以/data/123/key
和/data/231/key
,这意味着有多种可能的答案。
实现这一目标的唯一方法是创建自己的倒排索引。每当您create
文档时,请使用“说明云功能”自动将文档添加到/keys/
,其ID为密钥,并更新名为paths
的字段以包含密钥的完整路径。 paths
应该是地图。
您可以通过侦听该事件并更新倒排索引来支持删除。
对于上面的示例,您将在/keys/
中有一个文档,其中包含以下内容:
Id: key
paths: {'/data/123/key' = true,
'/data/231/key' = true}