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

时间:2018-08-08 14:42:16

标签: java android firebase google-cloud-firestore

以下是允许用户将数据存储到Firestore中的代码。问题是,登录到该应用程序的所有用户都可以查看上传的数据。 我如何才能只允许当前登录的用户仅存储其帐户的数据?

在Firebase数据库中,我使用以下代码(有效,但不适用于Firestore)

FirebaseUser用户= FirebaseAuth.getInstance()。getCurrentUser();   字符串userId = user.getUid();  mDatabaseRef = FirebaseDatabase.getInstance()。getReference(FB_DATABASE_PATH).child(userId);

上面的代码行仅允许已登录用户存储和检索数据。因此,数据仅对他们而言是唯一的。

如何为Firestore复制它?

cols = df.columns
for i in range(1, len(cols)):
    df[cols[0]] = df.apply(lambda x: x[cols[0]].replace('#',str(x[cols[i]]),1) if x[cols[i]]!=np.NaN else x,axis=1)
print(df[cols[0]])

2 个答案:

答案 0 :(得分:1)

  

如何仅使用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);

答案 1 :(得分:0)

您需要添加一个存储规则,以防止一个用户向另一个用户添加数据。只需检查firestore中的auth用户ID,并将其与文档上的用户ID进行比较即可。

相关问题