javascript - 如何在给定特定子键的情况下获取所有父键
问题描述
我想返回一个包含给定子键的父键数组。
这是我的数据库(成员用户 ID 以及他们所在的每个组的 ID):
.
例如:
- 如果我提供
-Lu3Zs4FCW6F4IcMSU8K
它应该返回两个父键,SnGXDFilErWEqFxPgWY5bIIAnPA3
并且t1S9N9owgKRGqBaNxs02rru8GpD3
. - 如果我提供
-Lu3gCYh5QUplnwLdOFA
它应该只返回t1S9N9owgKRGqBaNxs02rru8GpD3
子值(0 或 1)未知。
这是我到目前为止所尝试的:
var members = [];
return await firebase.database().ref('members').orderByChild(groupId).once('value', snap => {
snap.forEach(data => {
members.push(data.key);
});
}).then(() => {
return members;
});
但是无论我提供什么子键,此代码都会返回两个成员键。任何帮助,将不胜感激。
解决方案
您当前的数据结构允许您有效地查找给定成员的组。但是,它不允许您有效地找到给定组的成员。
要允许后一种用例,请考虑添加一个与您现在所拥有的几乎相反的额外数据结构:
"groups": {
"-Lu3Zs4FCW6F4IcMSU8K": {
"SnGXDFilErWEqFxPgWY5bIIAnPA3": true,
"t1S9N9owgKRGqBaNxs02rru8GpD3": true
},
"-Lu3gCYh5QUplnwLdOFA": {
"t1S9N9owgKRGqBaNxs02rru8GpD3": true
}
}
现在,您可以像查找成员的组一样查找组的成员。
另请参阅我的答案:
推荐阅读
- f# - F# 有对象引用还是复制对象
- c - 关于c编程中的break语句和循环的终止
- python - 使用字节解密消息
- r - 根据 R 中多次出现的分隔符将数据框列拆分为多列
- cucumberjs - 将 cucumberjs 从版本 6 迁移到 7 时出错
- python - 在 Python 断言消息中引用参数的传统方式是什么?
- powershell - Open-NetGPO 在域控制器上失败
- asp.net-core - ASP.NET Core JWT 身份验证以保护 webAPI [Authorize] 属性错误 401 未经授权
- c++ - 没有排序关键字的字母 c++ 排序
- windows - 将 Windows 注册表配置单元保存到内存中