Как скачать снимок базы данных Firebase? - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь получить некоторые данные из базы данных 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]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...