我正在尝试从Android应用中的Firebase数据库获取数据,以便只显示当前经过身份验证的用户创建的数据,并使用以下代码。
{
"rules": {
"events": {
"$userId": {
".read": "auth.uid == $userId",
".write": "auth.uid == $userId",
}
}
}
}
数据库如下所示:
root
events
event1
city
date
userID
event2
city
date
userID
没有用户“表”。但是,用户通过Firebase用户界面登录,因此,FirebaseAuth会使用uid创建帐户。
我正在尝试从以下行获取数据:
databaseReference = firebaseDatabase.getReference().child("events");
databaseReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Event event = new Event();
event = dataSnapshot.getValue(Event.class);
eventList.add(event);
eventListRecyclerView.setAdapter(EventAdapter);
}
相应的时候我没有得到任何数据。
帮助将不胜感激。
由于
答案 0 :(得分:0)
你错误的孩子是因为 root是规则而且孩子是事件 如果没有父母,你就不会直接打电话给孩子
我认为以下代码可以解决您的问题
databaseReference = firebaseDatabase.getReference().child.("rules").child("events");
答案 1 :(得分:0)
我自己找到了解决方案。 我的数据库结构不正确。它应该是
root
<uid>
events
...
数据库参考代码应为
mContactsDatabaseReference = mFirebaseDatabase.getReference().child("events").child(new FirebaseAuth.getCurrentUser().getUid());