gpt4 book ai didi

android - 如何只检索 firebase 数据库中的某个节点

转载 作者:搜寻专家 更新时间:2023-11-01 09:20:38 26 4
gpt4 key购买 nike

基于 Firebase 规则的安全性不返回可读节点

实时数据库由根级别的productA、productB和productC三个节点组成,我只想让节点A和B被读取,而不是在C级别。 Firebase 模拟器在这些级别时会产生正确的结果,当我尝试下面的代码时它不会读取值

myDatabaseReference = FirebaseDatabase.getInstance().getReference("/"); // does  not work

//myDatabaseReference = FirebaseDatabase.getInstance().getReference("/productA"); // does work
...
myDatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

Iterable<DataSnapshot> snapshotIterator = dataSnapshot.getChildren();


Iterator<DataSnapshot> iterator = snapshotIterator.iterator();

while ((iterator.hasNext())) {

Object node= iterator.next();
String NodeKey = ((DataSnapshot) node).getKey();
Object NodeValue = ((DataSnapshot) node).getValue();
// dosomething
}


}

@Override
public void onCancelled(DatabaseError databaseError) {
ItemList.add(databaseError.getMessage());
}
});

在 getReference 中指定根节点时应该触发 onDataChange

数据就像enter image description here .

模拟器返回 enter image description hereenter image description here

最佳答案

Firebase 的 security rules don't filter your data .它们只是验证读取操作是否被允许。因此,如果您将监听器附加到根目录,它会检查您是否具有对根目录的读取权限。由于您在那里没有读取权限,因此整个读取操作将被拒绝。

如果您还告诉模拟器读取根 (/),模拟器将给出相同的结果。

关于android - 如何只检索 firebase 数据库中的某个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56104221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com