![](/img/trans.png)
[英]Flutter - Firebase RTDB, The method forEach was called on 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 之外,事務也正常完成。
此外,當我添加時:
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.