第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Firebase runTransaction無法正常工作-MutableData為null

Firebase runTransaction無法正常工作-MutableData為null

溫溫醬 2019-11-20 14:38:02
我正在嘗試使用runTransaction()Firebase數(shù)據(jù)庫,但無法正常工作。這是我正在使用的代碼。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) {    }});當(dāng)我在應(yīng)用程序中按一個按鈕時,此代碼被激活。自啟動應(yīng)用程序以來第一次按下按鈕時,我的數(shù)據(jù)庫不變。但是,自啟動應(yīng)用程序以來,當(dāng)我第二次按下按鈕時,它將更新為下一個數(shù)字。我不明白這是什么問題,或者為什么只在第二次按下按鈕時才這樣做。
查看完整描述

1 回答

?
慕娘9325324

TA貢獻1783條經(jīng)驗 獲得超4個贊

您將要遵循Firebase文檔中用于處理事務(wù)的模式,并處理事務(wù)回調(diào)沒有當(dāng)前值的情況:


public Transaction.Result doTransaction(MutableData currentData) {

    long value = 0;

    if(currentData.getValue() != null) {

        String numQuestions = (String) currentData.getValue();

        value = Long.parseLong(numQuestions, 16);

    }

    value++;

    String incHex = Long.toHexString(value);

    currentData.setValue(incHex);

    return Transaction.success(currentData);

}

您需要執(zhí)行此操作的原因是Firebase可能(并且經(jīng)常會)多次執(zhí)行事務(wù)回調(diào),而您需要為此做些準(zhǔn)備。


首次調(diào)用時runTransaction(),F(xiàn)irebase客戶端將立即doTransaction()使用其對當(dāng)前數(shù)據(jù)的當(dāng)前猜測來調(diào)用您的回調(diào)。通常會這樣null。

您的代碼根據(jù)當(dāng)前值返回下一個值。在上述情況下,如果當(dāng)前值為null新值,則將為1。

然后,F(xiàn)irebase客戶端會將假定的當(dāng)前值和新值發(fā)送到服務(wù)器。

如果實際存儲的值與假定的當(dāng)前值相同,則Firebase服務(wù)器將寫入您指定的新值。

如果實際存儲的值與假定的當(dāng)前值不同,則Firebase服務(wù)器將拒絕新值,并將實際的當(dāng)前值發(fā)送給客戶端。

在此階段,客戶端返回到步驟1,使用現(xiàn)在更新的假定當(dāng)前值。

如果這不能解釋您所看到的行為,則可能需要檢查將哪些值傳遞給onComplete()。


查看完整回答
反對 回復(fù) 2019-11-20
  • 1 回答
  • 0 關(guān)注
  • 367 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號