gpt4 book ai didi

android - 通过 Firebase 中的事务更新多个对象的值

转载 作者:太空狗 更新时间:2023-10-29 16:30:30 24 4
gpt4 key购买 nike

我正在使用 Firebase 编写一个简单的聊天应用程序。我的数据库看起来像这样 enter image description here像这样

现在,我想为具有一个 groupId 的所有对象增加一个变量“计数器”(+1)(例如:groupId ="eee1111111111111")

我只知道只有一个 DatabaseReference 的事务,比如 as

    DatabaseReference mCount = myDataRef.child(Consts.CHILD_RECENT).child("-  
KUgZ3_5nXUpsyVNTnn5");

mCount.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
FRecent f = mutableData.getValue(FRecent.class);
if (f == null) {
return Transaction.success(mutableData);
}
f.counter = f.counter + 1;
mutableData.setValue(f);
return Transaction.success(mutableData);
}

@Override
public void onComplete(DatabaseError databaseError, boolean b,
DataSnapshot dataSnapshot) {
// Transaction completed


}
});`

最佳答案

您可以查询所有 groupId 等于“eee1111111111111”的 child 。
然后你循环所有这个 child 并更新计数

DatabaseReference ref = myDataRef.child(Consts.CHILD_RECENT);
ref.orderByChild("groupId").equalTo("eee1111111111111").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// loop all result
for (DataSnapshot child: snapshot.getChildren()) {
// update count for child: child.getKey()
DatabaseReference mCount = ref.child(child.getKey());

// run your transaction here
mCount.runTransaction(new Transaction.Handler() {
...
}
}
}

@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});

关于android - 通过 Firebase 中的事务更新多个对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40210850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com