您需要POJO/Custom類來有效地寫入/讀取到Firebase數據庫。 Idealy,你已經創建了一個類Message
用getter和setter方法,並定義了默認構造函數:
class Message {
private String message;
public Message() {
}
public Message(String message) {
this.message = message;
}
public void getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
然後改變你的規則是:
{
"rules": {
"message": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}
}
在Java代碼中
那麼做到這一點:
DatabaseReference mDatabaseReference;
FirebaseUser firebaseUser;
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
// User is signed in
} else {
// User is signed out
}
}
};
...
//To save a message associated to only the signed in user
Message message = new Message();
message.setMessage("a message");
mDatabaseReference = FirebaseDatabase.getInstance().getReference();
mDatabaseReference.child("message").child(firebaseUser.getUid())
.setValue(message)
.addOnCompleteListener(DetailsCaptureActivity.this, new OnCompleteListener<Void>() {
...
});
現在,以讀取該數據做到這一點:
//Set up an AuthStateListener that responds to changes in the user's sign-in state:
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
databaseReference = firebaseDatabase.getReference().child("message").child(firebaseUser.getUid());
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Message message = dataSnapshot.getValue(Message.class);
//You can now get your message using message.getMessage();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, databaseError.getMessage());
}
});
} else {
Log.e(TAG, "onAuthStateChanged:signed_out");
}
}
};
就是這樣。
您現在可以添加自己的實現來檢索消息列表。很好,這不會是一個問題。
請添加最小信息以將問題重現到您的問題。它下面有一個編輯鏈接,允許您添加:JSON結構的片段(如文本,沒有截圖),失敗的代碼和安全規則。 –
@FrankvanPuffelen修復 –