我有一个生日列表,如果生日结束,它应该在firebase上添加一年(以毫秒为单位)。我遇到的主要问题是如何访问确切的项目来添加年份。 Firebase项目没有通过应用程序添加,这就是为什么我不能使用getKey。这是照片。
if(daysLeft<0){
mFirebaseDatabaseReference.child(CODEFROGDB).child(/*here i need to get to the item*/).child("bday_p").setValue(model.getBday_p() + 31556952000L);
}
答案 0 :(得分:0)
您可以使用上一个值来查询要更新的项目:
if(daysLeft<0){
mFirebaseDatabaseReference.child(CODEFROGDB)
.orderByChild("bday_p")
.equalTo(model.getBday_p())
.addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mFirebaseDatabaseReference.child(CODEFROGDB)
.child(dataSnapshot.getKey())
.child("bday_p").setValue(model.getBday_p() + 31556952000L);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
答案 1 :(得分:0)
您可以使用以下代码实现此目的的简单方法:
if(daysLeft<0) {
mFirebaseDatabaseReference.child(CODEFROGDB)
.addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long now = System.currentTimeMillis();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Long bday_p = ds.child("bday_p").getValue(Long.class);
if(bday_p < now) {
ds.child("bday_p").getRef().setValue(bday_p + 31556952000L);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
}