当我使用用户帐户1登录并上传数据时,让我们说"Hello"并获取它,我可以看到单词"Hello"(这是我想要的(。但是当我注销并使用用户帐户2登录时,每当我单击获取时,它都会显示"您好"。但它不应该显示这一点,因为这是由用户帐户 1 输入的。因此,它应该只显示登录用户输入的数据。
如何更改我的代码以仅允许当前登录用户存储和检索数据?
下面是代码:
@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();
}
});
}
});
因为每次将数据加载到同一文档时
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);