如何下载Firebase数据库快照?

时间:2018-10-13 19:37:35

标签: c# firebase firebase-realtime-database

我正在尝试从Firebase数据库检索一些数据。我过去曾经做得很好,但是下面的GetValueAsync()代码有问题。调试时,它卡在“ reference.Database”行中,但是我不确定自己做错了什么。如果在未调试的情况下运行,则不会检索任何信息。

我不确定问题是否出在路径上。调试显示,loggingUserId在下一行引用该值之前正在存储该值,但是该函数的其余部分从未完成或出错。该应用程序已编译,但我永远无法从快照中捕获任何信息。

我的数据库格式如下:

“用户”->
78cVqzA8qNTNigsao3V​​vdnM0Qol2(正确)->
(几个数据对,例如级别: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,状态= WaitingForActivation,方法=“ {null}”,结果=“ {尚未计算}” System.Threading.Tasks.Task`1 [[Firebase.Database.DataSnapshot,Firebase.Database,版本= 1.0.0.0,文化=中性,PublicKeyToken =空]]

0 个答案:

没有答案