gpt4 book ai didi

java - 如何对数据求和并将其传输到 Firebase?

转载 作者:行者123 更新时间:2023-12-02 09:51:00 25 4
gpt4 key购买 nike

我在 Firebase 中有一个字段:balance。我需要的是,当一个人输入总和 100 后,该字段将值更改为 100。然后,当该人输入总和 50 时,字段值将变为 150

客户端如何编写处理逻辑?数据汇总。我认为这太简单了,但我需要你的帮助!

    mDatabaseUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String user_id = mAuth.getCurrentUser().getUid();

String balance = dataSnapshot.child(user_id).child("Balance").getValue(String.class);

mCountPayment.setText(balance + " ₽");
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

mPaymentButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
paymentIntent();
}
});
}

private void paymentIntent() {


final String user_id = mAuth.getCurrentUser().getUid();

final String count = mPaymentList.getText().toString().trim();

if (!TextUtils.isEmpty(count)) {


mDatabaseUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mDatabaseUsers.child(user_id).child("Balance").setValue(count);
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}
}

最佳答案

要根据现有值将值写入实时数据库,您需要 use a transaction .

您的交易的基本代码如下所示:

DatabaseReference balanceRef = FirebaseDatabase.getInstance().getReference("/Users/"+ user_id +"/Balance");
Long delta = 50l;
balanceRef.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
Long balance = mutableData.getValue(Long.class);
if (balance == null) {
mutableData.setValue(delta);
}
else {
Long amount = mutableData.getValue(Long.class);
amount = amount + delta;
mutableData.setValue(amount);
}
return Transaction.success(mutableData);
}

@Override
public void onComplete(DatabaseError databaseError, boolean b,
DataSnapshot dataSnapshot) {
// Transaction completed
Log.d(TAG, "balanceTransaction:onComplete:" + databaseError);
}
});

关于java - 如何对数据求和并将其传输到 Firebase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56323944/

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