# #database #firebase #xamarin
Вопрос:
Я работаю с Xamarin и FireBase, у меня следующая проблема:
У меня есть пользователи в моей базе данных, и у каждого из них есть список элементов. Мне нужно получить список элементов текущего пользователя, и проблема в том, что я не знаю, как заменить ключ каждого пользователя в дереве (я просто жестко написал его). Это фрагмент :
var products = (await client.Child("Users").Child("-MXf6T19md1UOTVvHWRU").Child("Items")
.OnceAsync<Item>())
.Select(f => new Item
{ . . .
Вот изображение дерева базы данных.
Как мне заменить Дочерний элемент(«-MXf6T19md1UOTVvHWRU») на текущую ветвь, в которой я нахожусь?, принимая во внимание, что рядом с этим я должен получить доступ к другому дочернему элементу. Конечно, у меня есть доступ к значению имени пользователя, которое хранится в настройках.
Я был бы признателен за некоторое просвещение, заранее спасибо.
Ответ №1:
Мне нужно получить список элементов текущего пользователя, и проблема в том, что я не знаю, как заменить ключ каждого пользователя в дереве (я просто жестко написал его).
Вы можете использовать приведенный ниже код, чтобы сначала получить все товары, а затем получить конкретный товар.
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