我正在编写一个Android应用程序,其中将一些对象(交易,类别等)组合到一个项目中,这些项目可以在用户受邀请之间共享。例如。用户A创建一个项目-只有他有权访问该项目,直到与用户B共享该项目-然后他们两个都应该有权访问该项目。我正在使用firebase实时数据库项目来实现这一目标。 这是数据库结构的一部分:
"transactions": {
"project1": {
"SDGSG%$4gs" : {
"transacationMonth": 7,
"transactionAmount": 400.67,
...
}
},
"project2": {
...
}
},
"categories": {
"project1": {
"grtge5g4e5ge45g": {
"categoryName" : "cat1",
...
}
},
"project2" : {
...
}
}
,在该结构中,我有一个节点“ access”,它决定哪个用户可以访问哪个项目:
"access": {
"project1": {
"uid1": true
},
"project2": {
"uid7": true
}
}
现在,假设我的应用程序用户(firebase用户ID = uid1)希望与其他firebase用户(firebase用户ID = uid2)共享他的项目(“ project1”)。 从结构的角度来看,让应用程序添加以下条目就足够了:
"access": {
"project1": {
"uid1": true,
"uid2": true,
},
...
但是从我的Android应用程序代码角度来看,我不知道uid2。例如,我可能知道带有uid2的用户正在使用的邮件,但我不知道如何仅基于电子邮件(或其他一些属性,如用户名或其他)来访问uid2。
那么...我该怎么做?
答案 0 :(得分:0)
首先使用以下代码获取唯一的用户ID:
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
Log.d(TAG,user.getUid());
}
对于数据库中的每个项目,必须有
unique-projectID
,并且在其中 存储您想要访问该项目的用户ID。
"access": {
"unique_projectID": {
"uid1": true,
"uid2": true,
}
}
让我们举个例子:假设有两个用户A和B。现在,用户A创建一个项目,而该项目仅包含用户A的ID。现在,用户A与用户B共享项目,因此项目B中包含了B'Id。