首页 文章

如何仅使用Firestore存储当前登录用户的数据

提问于
浏览
2

下面是允许用户将数据存储到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 回答

  • 0

    如何仅使用Firestore存储当前登录用户的数据

    如果将 uid 传递给 document() 方法,则可以实现相同的功能 . 所以在Firebase实时数据库中使用以下代码行:

    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    String userId = user.getUid();
    mDatabaseRef = FirebaseDatabase.getInstance().getReference(FB_DATABASE_PATH).child(userId);
    

    在Firestore中与以下内容相同:

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

    您需要添加防火墙规则以防止用户将数据添加到其他用户 . 只需检查firestore中的auth用户标识并将其与文档上的用户标识进行比较 .

相关问题