기존의 타임 스탬프보다 오래된 데이터를 추가하려고합니다. 샘플 데이터베이스 :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 코드에서 SAME 데이터를 추가해도 아무런 영향을주지 않습니다. 거부해야
샘플 데이터 : Admin Database API 절에 설명 된대로
/latest/517
{
"PARAM1" : {
"timestamp" : -5,
"value" : 643
}
}
나는 순수 자바로 com.google.firebase:firebase-admin:4.0.3
을 사용합니다.
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