我正在开发一个 React Native 应用程序并有疑问。
我需要返回所有 groups(例如“group-id-01”),其中提供的 UID 存在于 members 中。
此代码返回所有组:
const memberGroup = firebase.database().ref('groups')
memberGroup.once('value')
.then((snapshot) => {
console.log('snapshot');
console.log(snapshot.val());
})
.catch((error) => {
console.log('Erro');
console.log(error);
});
我得到的结果:
"group-id-01"
"members"
"no-uid-provided":"Belem"
"oZlTzlbCTGaZfsrzyxqABlnxt2e2":"Julia"
"name":"Rolling Stones"
我想要的结果:
"group-id-01"
"members"
"oZlTzlbCTGaZfsrzyxqABlnxt2e2":"Julia"
"name":"Rolling Stones"
嗯...
我尝试了一些使用 .orderByChild 和 .equalTo 的查询,但结果为空。
const memberGroup = firebase.database().ref('groups')
.orderByChild('oZlTzlbCTGaZfsrzyxqABlnxt2e2')
.equalTo('Julia')
memberGroup.once('value')
.then((snapshot) => {
console.log('snapshot');
console.log(snapshot.val());
})
.catch((error) => {
console.log('Erro');
console.log(error);
});
我是 Firebase 的新手,我不知道是否可以查询另一个名字未知的 child 中的 child 。
感谢所有的帮助:D
最佳答案
您当前的结构允许您轻松查找给定组的成员。它不允许您轻松查找给定用户的组。要允许后者,您需要添加一个附加数据结构(通常称为反向索引)将用户映射回组。
userGroups
uid1
groupid1: true
groupid2: true
uid2
groupid2: true
groupid3: true
这意味着您正在复制数据以允许其他用例,这在 NoSQL 数据库中很常见。
另见:
关于javascript - 火力地堡 : Querying data inside an unknown name key (child inside another child),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55534286/