Java 仅通过Firestore为当前登录用户存储数据

Java 仅通过Firestore为当前登录用户存储数据,java,android,firebase,firebase-authentication,google-cloud-firestore,Java,Android,Firebase,Firebase Authentication,Google Cloud Firestore,当我使用用户account1登录并上传数据时,让我们说“Hello”并获取数据,我可以看到“Hello”这个词(这就是我想要的)。但当我注销并使用用户account2登录时,每当我单击fetch时,它都会显示“Hello”。但它不应该显示这一点,因为这是由用户account1输入的。因此,它应该只显示登录用户输入的数据 如何更改代码,使数据仅由当前登录用户存储和检索 代码如下: @Override protected void onCreate(Bundle savedInstanceState

当我使用用户account1登录并上传数据时,让我们说“Hello”并获取数据,我可以看到“Hello”这个词(这就是我想要的)。但当我注销并使用用户account2登录时,每当我单击fetch时,它都会显示“Hello”。但它不应该显示这一点,因为这是由用户account1输入的。因此,它应该只显示登录用户输入的数据

如何更改代码,使数据仅由当前登录用户存储和检索

代码如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FirebaseApp.initializeApp(this);
    setContentView(R.layout.activity_ichild);

    String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
    DocumentReference uidRef = rootRef.collection("RootCollection").document(uid);
    POJO pojo = new POJO();
    uidRef.set(pojo);


    fetch=findViewById(R.id.fetchDocument);


    firestore = FirebaseFirestore.getInstance();

    upload =findViewById(R.id.uploadText);

    upload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            POJO pojo = new POJO();
            pojo.setValue("Hello World");

            //below code creates collection, creates a inner doc. and uploads the value (pojo)

            firestore.collection("RootCollection").document("MyDoc")
                    .set(pojo).addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {


                    //gets called if upload is successful
                    Toast.makeText(ichild.this,"Upload is successful", Toast.LENGTH_SHORT).show();

                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(ichild.this,"Upload is not successful" + e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });

        }
    });
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
FirebaseApp.initializeApp(本);
setContentView(R.layout.activity_-ichild);
字符串uid=FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore rootRef=FirebaseFirestore.getInstance();
DocumentReference uidRef=rootRef.collection(“RootCollection”).document(uid);
POJO POJO=新POJO();
uidRef.set(pojo);
fetch=findviewbyd(R.id.fetchDocument);
firestore=FirebaseFirestore.getInstance();
upload=findviewbyd(R.id.uploadText);
upload.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
POJO POJO=新POJO();
setValue(“你好世界”);
//下面的代码创建集合,创建内部文档,并上载值(pojo)
firestore.collection(“RootCollection”).document(“MyDoc”)
.set(pojo).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公开作废(作废避免){
//如果上载成功,则调用
Toast.makeText(ichild.this,“上载成功”,Toast.LENGTH_SHORT.show();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(ichild.this,“上载不成功”+e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}
});

因为每次将数据加载到同一文档时

firestore.collection("RootCollection").document("MyDoc")
相反,您可以使用引用路径中id的文档,因此使用

uidRef.set(pojo).addOnSuccessListener(new OnSuccessListener<Void>() {
看看这个答案
firestore.collection("RootCollection").document("MyDoc")
                    .set(pojo).addOnSuccessListener(new OnSuccessListener<Void>() {
POJO pojo = new POJO();
uidRef.set(pojo);