如何使用firebase在xamarin中指定当前的关键节点?

问题描述

我正在使用 Xamarin 和 FireBase,但我遇到了下一个问题:

我的数据库中有用户,每个用户都有一个项目列表。我需要检索当前用户的项目列表,问题是我不知道如何替换树中每个用户的键,(我只是硬写的)。这是片段:

var products = (await client.Child("Users").Child("-MXf6T19md1UOTVvHWRU").Child("Items")
                .OnceAsync<Item>())
                .Select(f => new Item
                { . . .

Here is a picture of the database tree.

考虑到我必须访问旁边的另一个 Child,我如何将 Child("-MXf6T19md1UOTVvHWRU") 替换为我所在的当前分支?当然,我可以访问存储在首选项中的用户名值。

我希望得到一些启发,提前致谢。

解决方法

我需要检索当前用户的项目列表,问题是我不知道如何替换树中每个用户的键,(我只是硬写的)。

您可以使用下面的代码先获取所有项目,然后再获取特定项目。

 public async Task<List<User>> GetAllUsers()
    {

        return (await firebase
          .Child("Users")
          .OnceAsync<User>()).Select(item => new User
          {
              Name = item.Object.Name,UserId = item.Object.UserId,}).ToList();
    }

public async Task<User> GetUser(int userId)
    {
        var allUsers = await GetAllUsers();
        await firebase
          .Child("Users")
          .OnceAsync<User>();
        return allUsers.Where(a => a.UserId == userId).FirstOrDefault();
    }

型号:

 public class User
{
    public int UserId { get; set; }
    public string Name { get; set; }
}

您可以从 GitHub 下载类似的源代码。 https://github.com/susairajs/Xamarin-Firebase-RealtimeDatabase