Firebase Получить данные - Android - PullRequest
0 голосов
/ 17 марта 2019

Я могу записывать данные в свою базу данных, используя Unity.Тем не менее, я хочу обновить существующие данные, как я могу это сделать?(т.е. читать все существующие дочерние данные и обновлять их, например, Score_new = Score_old + X) Мне нужно использовать снимок, но мне не удалось: /

Мой код для записи данных:

public void WriteDatabase(int score, int level, int kill, int death, int xp, int live)
{
    string uid;

    if(usermanager!=null && usermanager.user != null)
    {
        uid = usermanager.user.UserId;
        Debug.Log("DataManager: Set User ID from UserManager for User: " + uid);
    }
    else
    {
        Debug.LogError("DataManager: Set User not set.");
        return;
    }

    LeaderBoardEntry entry = new LeaderBoardEntry(uid, score, level, kill, death, xp, live);
    Dictionary<string, System.Object> entryValues = entry.ToDictionary();

    Dictionary<string, System.Object> childUpdates = new Dictionary<string, System.Object>();
    childUpdates["/Players/" + uid + "/"] = entryValues;

    reference.UpdateChildrenAsync(childUpdates).ContinueWith(task =>
    {
        if (task.IsCanceled)
        {
            Debug.LogError("DataManager: UpdateChildrenAsync is Cancelled.");
            return;
        }

        if (task.IsFaulted)
        {
            Debug.LogError("DataManager: UpdateChildrenAsync is Faulted.");
            return;
        }

        Debug.Log("DataManager: UpdateChildrenAsync is Completed.");
    });
}

Заранее спасибо,

1 Ответ

0 голосов
/ 19 марта 2019

Я решил это с помощью кода ниже (читайте в базе данных). Для людей, которые могут иметь такую ​​же или похожую проблему.

public void ReadDatabase()
{
    string uid;

    if (usermanager != null && usermanager.user != null)
    {
        uid = usermanager.user.UserId;
        Debug.Log("DataManager: Set User ID from UserManager for User: " + uid);
    }
    else
    {
        Debug.LogError("DataManager: Set User not set.");
        return;
    }

    FirebaseDatabase.DefaultInstance.GetReference("Players").Child(uid).GetValueAsync().ContinueWith(task =>
    {
        if (task.IsFaulted)
        {
            Debug.LogError("DataManager: read database is faulted with error: " + task.Exception.ToString());
            return;
        }

        if (task.IsCompleted)
        {
            DataSnapshot snapshot = task.Result;
            Debug.Log("DataManager: Read scores");

            Dictionary<string, System.Object> attributes = (Dictionary<string, System.Object>)snapshot.Value;

            if (snapshot.Exists)
            {
                Debug.Log("DataManager: UID ==> " + attributes["uid"].ToString());
                Debug.Log("DataManager: Score ==> " + attributes["score"].ToString());
                Debug.Log("DataManager: Level ==> " + attributes["level"].ToString());
                Debug.Log("DataManager: Kill ==> " + attributes["kill"].ToString());
                Debug.Log("DataManager: Death ==> " + attributes["death"].ToString());
                Debug.Log("DataManager: XP ==> " + attributes["xp"].ToString());
                Debug.Log("DataManager: Live ==> " + attributes["live"].ToString());
            }
            else
            {
                Debug.LogError("DataManager: Database for the user not available.");
            }

        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...