我想在photoJson
唯一的数据库中上传图片信息。在插入之前,我想检查它是否已存在于数据库中。所以我写了这个规则。在应用程序内我上传信息它是复制数据。我知道这样的问题已经存在,但我测试了解决方案并且它无法正常工作。
{
"rules": {
"wallpapers" :{
".read": true,
".write" : true,
"$wallpaper":{
"photoJson": {
//Checking if same wall already exists
".validate": "!root.child('wallpapers').child(newData.val()).exists()",
},
"url": {
".validate": "newData.isString()"
},
"thumbUrl": {
".validate": "newData.isString()"
},
"likes": {
".validate": "newData.isNumber()"
},
"dislikes": {
".validate": "newData.isNumber()"
},
"favorites": {
".validate": "newData.isNumber()"
}
}
}
}
}
答案 0 :(得分:1)
解决方案是应用逻辑,而不是Firebase规则。 Reference
ref.child("-JlvccKbEAyoLL9dc9_v").addListenerForSingleValueEvent(new
ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
if (!snapshot.exists()) {
// TODO: handle the case where the data does not yet exist
}
}
@Override
public void onCancelled(FirebaseError firebaseError) { }
});