我正在开发React Native应用,并对查询有疑问。
我需要返回所有组(例如“ group-id-01”),其中提供的 UID 存在于成员中。 / p>
此代码返回所有组:
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的新手,我不知道是否可以在另一个名字未知的孩子中查询孩子。
感谢所有帮助:D
答案 0 :(得分:2)
您当前的结构可让您轻松查找给定组的成员。它不允许您轻松查找给定用户的组。要允许后者,您将需要添加附加数据结构(通常称为反向索引),将用户映射到组。
userGroups
uid1
groupid1: true
groupid2: true
uid2
groupid2: true
groupid3: true
这意味着您要复制数据以考虑其他用例,这在NoSQL数据库中很常见。
另请参阅: