簡體   English   中英

Firebase RTDB Unity - RunTransaction 總是返回 Null

[英]Firebase RTDB Unity - RunTransaction Always Returns Null

初始調用是:

    db_reference
    .Child("total_users")
    .RunTransaction(RunTransaction)
    .ContinueWithOnMainThread(task => {
        if (task.Exception != null) {
            Debug.Log("Transaction exception.");

        } else if (task.IsCompleted) {
            Debug.Log("Transaction complete.");
        }
    });

哪個電話:

TransactionResult RunTransaction(MutableData mutableData) {
    List<object> data = mutableData.Value as List<object>;
    if (data != null) {
        Debug.Log("data not null: " + data);
    } else {
        Debug.Log("data null");
    }
    return TransactionResult.Success(mutableData);
}

目的是簡單地從可變數據中獲取一個值並增加它,但是這總是返回 null 而不是存儲在 RTDB 中的數據。 除了記錄 null 之外,事務也正常完成。

  • Firebase 統一 SDK 9.4.0
  • 統一版本:2021.3.9f1

此外,當我添加時:

        Dictionary<string, object> newScoreMap = new Dictionary<string, object>();
        newScoreMap["total_users"] = 1;
        mutableData.Value = newScoreMap;

並返回 TransactionResult.Success(mutableData);

這確實在 RTDB 中成功更新。

非常感謝任何幫助。

獲取當前值的初始null是預期的行為。

Firebase 立即調用您的回調,並以其對節點當前值的最佳猜測,通常是null 即使知道這永遠不可能是值,SDK 也不知道。 因此,您的代碼應該處理null (例如通過返回類似0的初始值),然后在 SDK 從服務器獲得更新的當前值后再次調用。

另見:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM