Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我希望Firebase实时数据库在内部更新_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 我希望Firebase实时数据库在内部更新

Android 我希望Firebase实时数据库在内部更新,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我有这样一个数据库: 我想在firebase DB中将cityIdealScore的值自动更新为“cityTop*10+cityWin”,但我不知道怎么做 p、 我需要cityealscore的值来按分数查询数据库 p、 s.2 public void fbWinUpdate(int cityNum) { String cNum = String.valueOf(cityNum); databaseReference.child(cNum).runTransaction(new

我有这样一个数据库:

我想在firebase DB中将cityIdealScore的值自动更新为“cityTop*10+cityWin”,但我不知道怎么做

p、 我需要cityealscore的值来按分数查询数据库

p、 s.2

public void fbWinUpdate(int cityNum) {
    String cNum = String.valueOf(cityNum);
    databaseReference.child(cNum).runTransaction(new Transaction.Handler() {
        @Override
        public Transaction.Result doTransaction(MutableData mutableData) {
            CityDetails cd = mutableData.getValue(CityDetails.class);
            if(cd == null) {
                return Transaction.success(mutableData);
            }

            cd.cityWin = cd.cityWin + 1;

            mutableData.setValue(cd);
            return Transaction.success(mutableData);
        }

        @Override
        public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
            Log.d("DBError", "postTransaction:onComplete:" + databaseError);
        }
    });
}

public void fbTopUpdate(int cityNum) {
    String cNum = String.valueOf(cityNum);
    databaseReference.child(cNum).runTransaction(new Transaction.Handler() {
        @Override
        public Transaction.Result doTransaction(MutableData mutableData) {
            CityDetails cd = mutableData.getValue(CityDetails.class);
            if(cd == null) {
                return Transaction.success(mutableData);
            }

            cd.cityTop = cd.cityTop + 1;

            mutableData.setValue(cd);
            return Transaction.success(mutableData);
        }

        @Override
        public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
            Log.d("DBError", "postTransaction:onComplete:" + databaseError);
        }
    });
}

public void fbTop4Update(int cityNum) {
    String cNum = String.valueOf(cityNum);
    databaseReference.child(cNum).runTransaction(new Transaction.Handler() {
        @Override
        public Transaction.Result doTransaction(MutableData mutableData) {
            CityDetails cd = mutableData.getValue(CityDetails.class);
            if(cd == null) {
                return Transaction.success(mutableData);
            }

            cd.cityTop4 = cd.cityTop4 + 1;

            mutableData.setValue(cd);
            return Transaction.success(mutableData);
        }

        @Override
        public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
            Log.d("DBError", "postTransaction:onComplete:" + databaseError);
        }
    });    }

这是我的城市地图,城市地图,城市地图4的更新代码。我想我可以用这种方法计算分数,但我认为它是无效的。我想知道我是否能在FirebaseRules上计算分数,诸如此类

这就是你可以做到的:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("City_Details_Database");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            Integer cityTop = ds.child("cityTop").getValue(Integer.class);
            Integer cityWin = ds.child("cityWin").getValue(Integer.class);

            Integer cityIdealScore = cityTop*10 + cityWin;
            dataSnapshot.child("cityIdealScore").getRef().setValue(cityIdealScore);
            Log.d("TAG", valueToUpadate);
        }
    }

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

分享你的代码我对此一无所知,所以我没有任何代码,但我有一个关于更新cityTop,cityTop4,cityWin@RedGod你想什么时候发生?在某些用户操作或数据库数据插入、删除、更新?我希望在firebase中进行实时更新