如何汇总数据并将其传输到 Firebase?

我在 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) {


            }

        });

            }

        }


阿晨1998
浏览 86回答 1
1回答

侃侃无极

要根据现有值将值写入实时数据库,您需要使用事务。您的交易的基本代码如下所示: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);    }});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java