Как изменить значение в Firebase

428
24 апреля 2017, 02:18

Как изменить значение child-a в firebase?

    public void updateDate(final Long oldDate, final Long newDate) {
        myRef = fbDatabase.getReference(getUid());
        myRef.keepSynced(true);
        myRef.child(TABLE_OPERATIONS)
                .orderByChild(COLUMN_DATE)
                .equalTo(oldDate)
                .addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                            CategoryList post = postSnapshot.getValue(CategoryList.class);
                            if (post.getDate() == oldDate) {
                                postSnapshot.getRef().child(COLUMN_DATE).setValue(newDate);
                            }
                        }
                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                });

    }
Answer 1

Если транзакцией, то так:

FirebaseDatabase.getInstance()
        .getReference(uid)
        .child("operations")
        .child(uidFromPush)
        .child("date")
        .runTransaction(new Transaction.Handler() {
            @Override
            public Transaction.Result doTransaction(MutableData mutableData) {
                //вот значение поля "datee"
                Longp = mutableData.getValue(Long.class);
                if (p == null) {
                    return Transaction.success(mutableData);
                }
                //присваиваем новое значение, например текущее время
                p = System.cureentTimeMillis();
                // Set value and report transaction success
                mutableData.setValue(p);
                return Transaction.success(mutableData);
            }
            @Override
            public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
                if (databaseError == null) {
                    //всё ОК
                } else {
                    //произошла ошибка. Она тут: databaseError.toException()
                }
            }
        });

Либо так, не транзакцией:

Map<String, Object> data= new HashMap<>();
data.put("date", System.currentTimeMissil());
DatabaseReference reference = FirebaseDatabase.getInstance()
        .getReference(uid)
        .child("operations")
        .child(uidFromPush);
reference.updateChildren(data, (databaseError, databaseReference) -> {
    if (databaseError == null) {
        //всё ОК
    } else {
        //произошла ошибка. Она тут: databaseError.toException()
    }
});
READ ALSO
Ошибка при взятии скриншота элемента

Ошибка при взятии скриншота элемента

ЗдравствуйтеНа сайте понадобилось заскринить каптчу, причем со страницы именно её

265
В чём разница между &#171;import java.util.*&#187; и &#171;import java.util.Scanner&#187;

В чём разница между «import java.util.*» и «import java.util.Scanner»

Вместо Scanner может быть что угодно - суть яснаА именно: зачем использовать второй вариант, если первый и набирать короче, и пригодится когда...

225
Макет портфолио [требует правки]

Макет портфолио [требует правки]

Подскажите пожалуйста где можно найти бесплатные psd макеты для сайта портфолио (верстальщик)?

231
Можно ли сделать прозрачный для нажатий фон?

Можно ли сделать прозрачный для нажатий фон?

Пытаюсь сделать игру, когда надо находить блоки, а поверх фон потихоньку все темнел и темнелСледовательно нужно, чтобы верхний слой был прозрачным...

248