Я пытаюсь получить некоторые данные из базы данных Firebase.Я был в состоянии сделать это хорошо в прошлом, но что-то не так с моим GetValueAsync()
кодом ниже.При отладке он застревает в строке "reference.Database", но я не уверен, что делаю неправильно.При работе без отладки никакая информация никогда не получается.
Я не уверен, что проблема в пути.Отладка показывает, что loggedUserId хранит значение перед ссылкой на него в следующей строке, но остальная часть функции никогда не завершается и не завершается с ошибкой.Приложение компилируется, но я никогда не смогу захватить какую-либо информацию из снимка.
Формат моей базы данных примерно такой:
"users" ->
78cVqzA8qNTNigsao3VvdnM0Qol2 (которыйправильно) ->
(несколько пар данных, таких как уровень: 1, количество жизней: 3 и т. д.)
Первоначально я думал, что программа пропустила его, потому что не получила его избазы данных еще нет, но я попытался использовать async / await, а также функцию while, чтобы дождаться получения базы данных, но независимо от времени она никогда не будет прочитана.Я подозреваю, что это как-то связано с путем, но я четыре раза проверил информацию о базе данных, и формат правильный.
using Firebase;
using Firebase.Database;
using Firebase.Unity.Editor;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
using Firebase.Auth;
using UnityEngine.SceneManagement;
public static void GetUserData()
{
FirebaseApp app = FirebaseApp.DefaultInstance;
app.SetEditorDatabaseUrl("FIREBASEDATABASELINK (Removed to post this code");
if (app.Options.DatabaseUrl != null)
app.SetEditorDatabaseUrl(app.Options.DatabaseUrl);
DatabaseReference reference =
Firebase.Database.FirebaseDatabase.DefaultInstance.RootReference;
loggedUserId = FirebaseAuth.DefaultInstance.CurrentUser.UserId;
reference.Database.GetReference("users").Child(loggedUserId).GetValueAsync()
.ContinueWith(task =>
{
if (task.IsFaulted)
{
Debug.LogError("Error retrieving user data");
return;
}
if (task.IsCompleted)
{
DataSnapshot userSnapshot = task.Result;
loggedEmail = userSnapshot.Child("email").GetRawJsonValue();
loggedCurrentScore =
userSnapshot.Child("currentScore").GetRawJsonValue();
loggedLevel = userSnapshot.Child("level").GetRawJsonValue();
loggedLives = userSnapshot.Child("lives").GetRawJsonValue();
loggedRound = userSnapshot.Child("round").GetRawJsonValue();
loggedTotalScore =
userSnapshot.Child("totalScore").GetRawJsonValue();
return;
}
});
}
Это то, что Debug показывает на getValueAsync()
.Даже если я добавляю функцию ожидания, или асинхронную, или что бы я ни делал, он все равно говорит «еще не вычислено».
- getTask Id = 1, Status = WaitingForActivation, Method = "{null}", Result = "{Еще не вычислено}" System.Threading.Tasks.Task`1 [[Firebase.Database.DataSnapshot, Firebase.Database, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null]]