【问题标题】:How to get a data Snapshot from Firebase once and only once (using C#)?如何从 Firebase 获取数据快照一次且仅一次(使用 C#)?
【发布时间】:2018-12-12 23:07:32
【问题描述】:

我正在使用 C# 使用 Unity,并且需要在场景开始时获取快照。但我需要只获得一次快照。 到目前为止,我发现的所有示例都使用某种事件侦听器来获取快照,这意味着快照可以被某些事件覆盖。 创建事件侦听器后(按照教程),我使用 if 语句解决了这个问题。

我正在使用的代码:

DataSnapshot dbSnapshot; // <-- the snapshot I need to use later

void Start(){
    StartListener();
    // Other stuff happens...
}

protected void StartListener() {
    dbRoot.ValueChanged += (
    object sender2, ValueChangedEventArgs e2) => {
        if (e2.DatabaseError != null) {
            Debug.LogError(e2.DatabaseError.Message);
            return;
        }
        Debug.Log("ValueChangedEventArgs");
        if (e2.Snapshot != null || e2.Snapshot.Value != null){
            if (dbSnapshot == null){
            //  This happens once, and prevents the dbSnapshot from being overwritten
                dbSnapshot = e2.Snapshot;
            }
        }
    };
}

这似乎可行,但我想知道是否可以在没有事件侦听器的情况下获取快照,或者至少是否有更优雅的解决方案。

【问题讨论】:

    标签: c# firebase unity3d firebase-realtime-database


    【解决方案1】:

    下面的例子我如何获取排行榜,这个只获取一个数据。

    FirebaseDatabase.DefaultInstance
               .GetReference("Leaders").OrderByChild("Score")
               .GetValueAsync().ContinueWith(task =>
               {
                   if (task.IsFaulted)
                   {
                       Debug.LogError("Get faulted");
                       return;
                   }
                   if (task.Result != null && task.Result.ChildrenCount > 0)
                   {
                       Debug.Log("Get data success!");
                       ...
                   }
               });
    

    【讨论】:

    • 谢谢@TrungBui。我想我以前遇到过这段代码。我不清楚的是,在这种情况下,我将如何设置“DataSnapshot dbSnapshot”变量的值(我在代码开头声明的那个)。我正在填写“数据库人”,所以与 Firebase 相关的所有内容对我来说仍然有点神秘。
    • 我不确定你的问题。您想在 firebase 上设置值 dbSnapshot 变量吗?刚刚使用 SetRawJsonValueAsync 之类的: FirebaseDatabase.DefaultInstance.GetReference("Leaders").Child("User").Child(user id).SetRawJsonValueAsync(userData).ContinueWith(task => ... )
    猜你喜欢
    • 1970-01-01
    • 2020-08-07
    • 2017-08-03
    • 2019-10-10
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2020-12-08
    • 2023-01-20
    相关资源
    最近更新 更多