1
我想阻止添加比現有時間戳更早的時間戳數據。示例數據庫:Firebase數據庫安全規則適用於模擬器,不適用於java代碼
{
"latest" : {
"517" : {
"PARAM1" : {
"timestamp" : 11492,
"value" : 6593
}
}
}
}
火力地堡安全規則:
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"latest": {
"$id": {
"$param": {
"timestamp": { ".validate": "newData.val() >= data.val()" }
}
}
}
}
}
現在,有趣的部分。當我檢查從模擬器添加不同的數據時 - 它按預期工作。 Smaler時間戳被拒絕,更高的被添加。但它不會對從Java代碼中添加相同數據產生任何影響。其應被拒絕
樣本數據:
/latest/517
{
"PARAM1" : {
"timestamp" : -5,
"value" : 643
}
}
我使用com.google.firebase:firebase-admin:4.0.3
用純Java作爲在Admin Database API部分所述。
POJO:
public class TimeValue {
public long timestamp;
public double value;
public TimeValue(long timestamp, double value) {
super();
this.timestamp = timestamp;
this.value = value;
}
}
插入:
Map<String, TimeValue> timeValue = new HashMap<String, TimeValue>();
timeValue.put("PARAM1", new TimeValue(-5L, 643));
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference idRef = database.getReference("latest/517");
idRef.setValue(timeValue);
爲什麼它的工作原理呀?這沒有任何意義。
謝謝!我花了太多時間在這個;-)。 – androfan