使用Firebase中的规则读取动态创建的子项

时间:2017-03-25 14:37:34

标签: android firebase firebase-realtime-database firebase-security

我有基于auth.uid

动态创建的子记录
{
  "map" : {
    "bpudzUe0maQYxk3cPETeTvy7MAt2" : {
      "latitude" : 28.63,
      "longitude" : 77.375,
      "timestamp" : 1490448969248,
    },
    "geQ0l71zJxgwgbwr3lAb8ScER8O2" : {
      "latitude" : 28.62965996,
      "longitude" : 77.375434,
      "timestamp" : 1490450348739,
    }
  }
}

我有规则要读取在15分钟内创建的所有子记录 -

{
  "rules": {
    "map": {
      ".write": "auth != null",
      "$id":{
      ".read": "data.child('timestamp').val() > (now - 900000)"
      }  
    }
  }
}

这就是我试图阅读消息的方式 -

FirebaseDatabase database = FirebaseDatabase.getInstance();
database.getReference("map").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
       }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

但它始终会提示消息Permission Denied

更新 我将规则改为 -

{
  "rules": {
    "map": {
      ".write": "auth != null",
      ".read": "auth != null",
      "$id":{
      ".read": "data.child('timestamp').val() > (now - 900000)"
      }  
    }
  }
}

现在我可以阅读这些记录,但它向我展示了所有这些记录,而不是最新记录。

0 个答案:

没有答案