Я разрабатываю систему чата, подсчитываю общее количество непрочитанных.
вот мой код
chatroomRef.child(chatInfo.getPartner_firebase_uid())
.child(mChatId)
.child("totalUnreadCount")
.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
Integer totalUnreadCount = mutableData.getValue(Integer.class);
if(totalUnreadCount == null){
mutableData.setValue(0);
}else{
mutableData.setValue(totalUnreadCount + 1);
}
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
Log.d("result", "postTransaction:onComplete:" + databaseError);
}
});
Когда я использовал этот код, я получил отказ в разрешении.
Но когда я использовал код ниже, это сработало.
chatroomRef.child(chatInfo.getPartner_firebase_uid())
.child(mChatId)
.child("totalUnreadCount")
.setValue(1);
данные двух кодовых наборов меняются одинаково в firebase-db.
Хотя один код получает ошибку разрешения, другой нет.
Так что я думаю, что это проблема с правилами Firebase.
И я дал 'true' для '.write', но получил ошибку разрешения.