您需要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修复 –