Firebase 搜索具有相同用户名/数据库结构的用户



我的数据库的结构包含用户在创建帐户时创建的用户名。用户名位于元数据下。 我已经有超过 2000 个用户,从未想过限制用户名/确保当人们使用 facebook 或谷歌登录时不会重复或附加数字(在这些情况下,我目前只是使用他们的名字(。 我希望能够搜索用户名:

"Users" : {
"eOhY4Wp6QNUtEjVTdmBff8UDY5p2" : {
"meta" : {
"username" : "testName"
}
}
}

我认为唯一的方法是创建另一个反向列出用户名的部分:

"UserList" : {
"testName" : "eOhY4Wp6QNUtEjVTdmBff8UDY5p2",
}

但问题是我不能有多个具有相同用户名的用户/我认为不可能有多个具有相同密钥的节点。

这是处理这种情况的最佳方法吗? 或者是否有具有相同用户名的替代方案(我不想使用快照拉下整个用户,因为这将是超级数据密集型的(。 如果这是我想到的最佳方法,我会进入并手动更改数据库中已有的重复项。

编辑的附加内容:

这是我所知道的从第一个结构获取用户名的唯一方法是获取整个快照,然后过滤具有用户名的用户 - 这将下载整个快照,这是超级数据密集型的,因为我只需要具有用户名的用户我正在搜索:

const snapshot = await firebase.child("Users").on("value")

我知道有 OrderBy 方法,但这不是顶级方法吗/我不需要直接在用户下方而不是更深 2 层的"testName"吗?

const snapshot = await firebase.child("Users").orderByChild("username")
.equalTo('testName')

由于用户名位于嵌套在已知路径下的属性中,因此可以像这样查询它:

firebase.child("Users")
.orderByChild("meta/username")
.equalTo('testName')

最新更新