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

Я работаю с Unity, использую C #, и мне нужно получить снимок в начале сцены.Но мне нужно получить снимок один раз и только один раз .До сих пор все примеры, которые я обнаружил, используют своего рода прослушиватель событий для получения снимка, и это означает, что снимок может быть перезаписан каким-либо событием.После того, как я создал прослушиватель событий (следуя инструкциям), я решил проблему с помощью оператора 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;
            }
        }
    };
}

Кажется, он работает, ноЯ хотел бы знать, возможно ли получить снимок без прослушивателя событий или, по крайней мере, есть ли более элегантное решение.

1 Ответ

0 голосов
/ 13 декабря 2018

Ниже приведен пример того, как я получаю таблицу лидеров, это получает данные только один.

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