无法从unity3d中的firebase实时数据库中检索数据

Posted

技术标签:

【中文标题】无法从unity3d中的firebase实时数据库中检索数据【英文标题】:Can not retrieve data from firebase realtime database in unity3d 【发布时间】:2019-11-26 14:40:27 【问题描述】:

我是 Unity Firebase 开发人员的新手。基本上,我创建了一个函数GetPlayerPrize 从firebase 获取特定的(登录用户)奖品详细信息。但是从 firebase 实时数据库中检索数据时我无法得到任何响应。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Firebase;
using Firebase.Auth;
using Firebase.Database;
using Firebase.Unity.Editor;
public class prizeCanvasScript : MonoBehaviour

public Text silver;
public Text gold;
public Button silverButton;
public Button GoldButton;
public Firebase.Auth.FirebaseAuth auth;
public Firebase.Auth.FirebaseUser user;

public void Start() 
    InitializeFirebase();


public void InitializeFirebase()

    FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://robberbird.firebaseio.com/");
    auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
    user = auth.CurrentUser;
    GetPlayerPrize();



void GetPlayerPrize() 

    Debug.Log("Getting player data" + user.UserId);

     FirebaseDatabase.DefaultInstance
    .GetReference("users")
    .Child(user.UserId)
    .GetValueAsync()
    .ContinueWith((task) =>
        if (task.IsFaulted)
        
            Debug.LogError("Error retriving user data: " + user.UserId);
            // Handle the error...
        
        else if (task.IsCompleted)
        
            DataSnapshot snapshot = task.Result;
            Debug.Log("snapshot" );
            Debug.Log(snapshot);                             
            // silver.text = snapshot.silverChest.ToString();
            // gold.text = snapshot.GoldChest.ToString();
        
    );



【问题讨论】:

你是说Debug.LogError("Error retriving user data: " + user.UserId);Debug.Log("snapshot" ); 都不会被调用吗? 是的。 Debug.LogError("获取用户数据出错:" + user.UserId);也不是 Debug.Log("snapshot" );曾经打电话。 【参考方案1】:

使用任务引用您的默认实例?

static Task DI = new System.Threading.Tasks.Task(LoginAnon);

public static void LoginAnon()

    DI = FirebaseAuth.DefaultInstance.SignInAnonymouslyAsync().ContinueWith(result =>
    
        FirebaseDatabase.DefaultInstance.GetReference("Lobbies/").ChildAdded += HandleLobbyAdded;
        FirebaseDatabase.DefaultInstance.GetReference("Lobbies/").ChildRemoved += HandleLobbyRemoved;
    );

..

 public static void HandleLobbyRemoved(object sender, ChildChangedEventArgs e)

    DataSnapshot snap = e.Snapshot;
    if (e.DatabaseError != null)
    
        Debug.LogError(e.DatabaseError.Message);
        return;
    
    //User who created the lobby
    string uID = snap.Key.ToString();

【讨论】:

以上是关于无法从unity3d中的firebase实时数据库中检索数据的主要内容,如果未能解决你的问题,请参考以下文章

从 Firebase 中的实时数据库获取数据后,无法写入 Unity 的 TMPro 文本字段

如何从 Flutter 中的 Firebase 实时数据库中按 categoryId 获取产品?

如果无法从 Firebase 实时数据库中检索数据,则尝试在 UITableView 上显示消息

如何根据 Angular 6 中的 Firebase 实时数据库中的键获取单个记录

无法从firebase实时数据库检索数据到recyclerview [重复]

聊天应用中的Firebase实时数据库无法按时检索邮件