所以我有一个如下图所示的地理数据结构。我的每个地理位置都代表拍摄照片的位置。因此,用红色圈出的唯一键是与照片对应的键,保存在我的数据库的单独分支中。
我现在陷入困境,因为我不确定如何设置我的安全规则只允许写入:"经过身份验证的用户等于照片所属的用户"。
注意:我无法执行以下操作,
image_location
-public
-user id
-picture id
- g:
- l:
-0:
-1:
这是因为我需要将所有图像位置保存在1个分支下,以便所有用户可以直接查询图像,如下所示:
ref = FirebaseDatabase.getInstance().getReference()
.child(image_location)
.child(public);
GeoFire geoFire = new GeoFire(ref);
提前谢谢大家!
答案 0 :(得分:0)
Understand Firebase Realtime Database Rules。这是怎么做的。特别是那个写规则。 ...在您的情况下,分支将不是db("users")
,它将是您已经命名的任何内容......
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid"
}
}
}
}
答案 1 :(得分:0)
Geofire for JavaScript将位置与密钥相关联。除了这两个信息之外,它不会在该位置保留其他属性。
这意味着基于当前用户执行某项操作的唯一方法是使用该用户的UID作为密钥。您可以通过以下方式获得保障:
"image_locations": {
"$uid": {
".write": "auth.uid === $uid"
}
}
由于您希望允许多张照片,因此无法实现。 GeoFire for Java最近添加了向地理位置添加更多数据(例如您对UID的需求)的功能,但这尚未在JavaScript库中发生。