相关疑难解决方法(0)

Firebase runTransaction无效 - MutableData为null

我正在尝试使用runTransaction()Firebase数据库但它无法正常工作.这是我正在使用的代码.

numQuestionRef.runTransaction(new Transaction.Handler() {
    @Override
    public Transaction.Result doTransaction(MutableData mutableData) {
        String numQuestions = (String) mutableData.getValue();
        long value = Long.parseLong(numQuestions, 16);
        value++;
        String incHex = Long.toHexString(value);
        mutableData.setValue(incHex);
        return Transaction.success(mutableData);
    }

    @Override
    public void onComplete(FirebaseError firebaseError, boolean b, DataSnapshot dataSnapshot) {


    }
});
Run Code Online (Sandbox Code Playgroud)

当我在我的应用程序中按下按钮时,此代码被激活.当我启动应用程序后第一次按下按钮时,我的数据库不会更改.但是当我启动应用程序后第二次按下按钮时,它会将其更新为下一个数字.我不明白它是什么错误或为什么它只在第二次按下按钮时才会这样做.

android transactions firebase firebase-realtime-database

3
推荐指数
1
解决办法
5800
查看次数

Android Firebase数据库事务

  ATNRef= FirebaseDatabase.getInstance().getReference("AvailableTokenNumber");
                ATNRef.runTransaction(new Transaction.Handler() {
                    @Override
                    public Transaction.Result doTransaction(MutableData mutableData) {

                        if (mutableData.getValue(int.class ) == 0){
                            mutableData.setValue(2);
                            data.tokenNo = 1;
                            return Transaction.success(mutableData);

                        }else {
                            data.tokenNo=mutableData.getValue(int.class);
                            mutableData.setValue(data.tokenNo + 1);
                            return Transaction.success(mutableData);
                        }
                    }
Run Code Online (Sandbox Code Playgroud)

每当代码第一次运行时,data.tokenNo的值均为0。之后,它将根据数据库值正确更新。

我无法弄清楚是什么使每次应用程序/代码的首次运行时data.token = 0的值。

android firebase firebase-realtime-database

3
推荐指数
1
解决办法
2460
查看次数

Firebase交易的奇怪行为

我的firebase看起来像这样:

在此处输入图片说明

这是测试代码(咖啡脚本):

Firebase = require 'firebase'

ref = new Firebase 'https://my_firebase.firebaseio.com/items'

ref.once 'child_added', (snapshot) ->
  childRef = snapshot.ref()
  console.log "child_added", childRef.toString(), snapshot.val()
  childRef.transaction(
    (data) ->
      console.log 'transaction on data', data
      return if !data or data.my_key isnt 'my_val'
      data.my_key = 'new_val'
      return data
    ,
    (err, commited, snapshot) ->
      if err
        console.error 'error', err
        return
      console.log 'commited? '+commited
      console.log 'server data', snapshot.val()
    ,
    false
  )
Run Code Online (Sandbox Code Playgroud)

并输出:

child_added https://my_firebase.firebaseio.com/items/item1 { my_key: 'my_val' }
transaction on data null
commited? false
server data null
Run Code Online (Sandbox Code Playgroud)

当第三个参数 …

firebase

2
推荐指数
1
解决办法
1391
查看次数