下面是允许用户将数据存储到Firestore的代码 . 问题是,上传的数据可供登录到应用程序的所有用户查看 . 如何才能仅允许当前登录的用户仅为其帐户存储数据?
使用Firebase数据库我使用以下代码(可以使用,但不适用于Firestore)
FirebaseUser user = FirebaseAuth.getInstance() . getCurrentUser(); String userId = user.getUid(); mDatabaseRef = FirebaseDatabase.getInstance() . getReference(FB_DATABASE_PATH).child(userId);
上面的代码行允许仅为登录用户存储和检索数据 . 因此,数据仅对它们是唯一的 .
我怎样才能为Firestore复制它?
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();
}
});
}
});
fetch.setOnClickListener(new View.OnClickListener() {
2 回答
如果将
uid
传递给document()
方法,则可以实现相同的功能 . 所以在Firebase实时数据库中使用以下代码行:在Firestore中与以下内容相同:
您需要添加防火墙规则以防止用户将数据添加到其他用户 . 只需检查firestore中的auth用户标识并将其与文档上的用户标识进行比较 .