قاعدة بيانات Firebase تسترد مجموع توابع متعددة

1

أريد عمل مجموع للعقد الفرعية المتعددة في قاعدة بيانات Firebase في الوقت الفعلي

Imagen 93

هذه هي قاعدة بياناتي ، في هذا أريد أن أفعل مجموع طفل "المبلغ" ، فكيف تفعل ذلك؟

الرجاء المساعدة!

2 الاجابة

0

كما أرى في قاعدة البيانات الخاصة بك ، الخاص بك amount الخاصية من نوع سلسلة وليس رقم. لذلك لا يمكنك ببساطة إنشاء مجموع حرفي سلسلة. لحل هذا تحتاج إلى تغيير اسم الممتلكات الخاصة بك لتكون من النوع number . أرى أيضًا أنك تقوم بتخزين العملة مع الرقم. يجب عليك إضافة العملة برمجياً من جانب المستخدم وليس في قاعدة البيانات. إذا كنت تفكر في تغيير نوع الخاص بك amount الملكية ، ثم يرجى الاطلاع على إجابتي من هذا المنصب

ومع ذلك ، إذا كنت ترغب في الاحتفاظ ببنية قاعدة البيانات الفعلية الخاصة بك ، يمكنك جمع جميع المبالغ باستخدام الخدعة التالية:

ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        int total = 0;
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String amount = ds.child("amount").getValue(String.class);
            int value = Integer.valueOf(amount.replace(" Rs.", ""));
            total =+ value;
        }
        Log.d("TAG", String.valueOf(total) + " Rs.");
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
your_database_reference.addListenerForSingleValueEvent(eventListener);

سيكون الناتج في logcat الخاص بك:

27000
:مؤلف
0

يمكنك استخدام طريقة addValueEventListener الخاصة بـ Firebase لهذا وحلقة dataSnapshot لحساب إجمالي كل مبلغ تابع

your_database_reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    int totalamount = 0;
    for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
        // TODO: handle the dataSnapshot
        String amount = snapshot.child("amount").getValue();
        // remove _Rs. from amount and typecase it to int
        totalAmount += amount;
    }
}

@Override
public void onCancelled(DatabaseError databaseError) {
    // Getting Post failed, log a message
    Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
    // ...
}
});
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام