firebase - Firebase 数据库建模隐私设置
问题描述
您好,我正在使用 firebase 实时数据库,并且我实施了隐私设置,因此用户可以决定显示或隐藏哪些信息。
这是我的方法。我是这样构造数据的好方法吗?
{<br>
"friends" : {<br>
"7BDcIre74IfE34DL1T1ZfzrZLcZ2" : {<br>
"a3AiwvaXrHSHM05xBFq9X0TCBwi1" : {<br>
"a3AiwvaXrHSHM05xBFq9X0TCBwi1" : true,<br>
"rule1" : true<br>
}<br>
},<br>
"a3AiwvaXrHSHM05xBFq9X0TCBwi1" : {<br>
"7BDcIre74IfE34DL1T1ZfzrZLcZ2" : {<br>
"7BDcIre74IfE34DL1T1ZfzrZLcZ2" : true,<br>
"rule2" : true<br>
}<br>
}<br>
},<br>
"rules" : {<br>
"rule1" : {<br>
"showDate" : true,<br>
"showName" : false<br>
},<br>
"rule2" : {<br>
"showDate" : false,<br>
"showName" : true<br>
}<br>
},<br>
"users" : {<br>
"7BDcIre74IfE34DL1T1ZfzrZLcZ2" : {<br>
"Geburtsdatum" : "01.01.2000",<br>
"name" : "Alex"<br>
},<br>
"a3AiwvaXrHSHM05xBFq9X0TCBwi1" : {<br>
"Geburtsdatum" : "01.01.2000",<br>
"Name" : "Peter"<br>
},<br>
"eAnWvNGh13N31nUEHszOzjUfL9d2" : {<br>
"Geburtsdatum" : "01.01.2000",<br>
"Name" : "Oskar"<br>
}<br>
}<br>
}<br>
解决方案
它不是。如果您想添加更多规则组合,它很快就会变得复杂且难以实施。您可以为设置创建一个模型类,并在每个朋友用户 ID 下创建一个 privacy_settings 节点,并在其下设置值。
数据结构:
"a3AiwvaXrHSHM05xBFq9X0TCBwi1" : {
"7BDcIre74IfE34DL1T1ZfzrZLcZ2" : {
"privacy_settings": {
"showDate" : false,
"showName" : true
}
}
}
Java模型类:
import android.os.Parcelable;
public class PrivacySettings implements Parcelable
{
boolean showDate,showName;
public PrivacySettings(boolean showDate, boolean showName)
{
this.showDate = showDate;
this.showName = showName;
}
public boolean isShowDate()
{
return showDate;
}
public void setShowDate(boolean showDate)
{
this.showDate = showDate;
}
public boolean isShowName()
{
return showName;
}
public void setShowName(boolean showName)
{
this.showName = showName;
}
@Override
public int describeContents()
{
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags)
{
dest.writeByte(this.showDate ? (byte) 1 : (byte) 0);
dest.writeByte(this.showName ? (byte) 1 : (byte) 0);
}
protected PrivacySettings(Parcel in)
{
this.showDate = in.readByte() != 0;
this.showName = in.readByte() != 0;
}
public static final Parcelable.Creator<PrivacySettings> CREATOR = new Parcelable.Creator<PrivacySettings>()
{
@Override
public PrivacySettings createFromParcel(Parcel source)
{
return new PrivacySettings(source);
}
@Override
public PrivacySettings[] newArray(int size)
{
return new PrivacySettings[size];
}
};
}
推荐阅读
- angular - angular - 使用两个 ngFor 循环的浏览器渲染性能
- macos - 如何在 MacOS 上设置环境变量?zsh:没有这样的文件或目录
- function - 函数中的隐式计算
- google-cloud-platform - 使用 Google Identity 和 IAM 限制对 GCP 资源的访问
- sql - 如何及时获取特定日期的记录?
- python - 使用类创建的数据无法通过烧瓶应用程序显示到 html 中
- php - Laravel 中的 XSRF 令牌验证失败
- java - JPA 存储库保存方法在 MySQL 中插入 NULL 值,而不是 json 请求提供的值
- java - Hibernate 不在二级 Hazelcast 缓存中存储实体
- r - 如何使用 R 提取数据?