Android 使用runTransaction时,我的权限被拒绝
我正在开发聊天系统,计算未读的总数 这是我的密码Android 使用runTransaction时,我的权限被拒绝,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在开发聊天系统,计算未读的总数 这是我的密码 chatroomRef.child(chatInfo.getPartner_firebase_uid()) .child(mChatId) .child("totalUnreadCount") .runTransaction(new Transaction.Handler() { @Override
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'to'.write',但得到了权限错误。听起来您没有读取TotalUnderCount值的权限。事务根据现有值写入新值,因此需要读写权限。谢谢。我不知道如何接受答案。现在我学会了!