通过firebase规则检查数据库中是否存在相同的数据

时间:2017-06-23 20:52:10

标签: android firebase firebase-realtime-database

我想在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()"
      }
      }
  }
}
}

1 个答案:

答案 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) { }
});