Я с нетерпением ждал ответа, так много раз обновляя страницу. К счастью, я нашел способ сделать это.
Чтобы создать ключ электронной почты , сначала замените любые символы на ". $ # []" в строке электронной почты, поскольку Firebase не поддержать их. Или другой способ - преобразовать строку в байтовый массив, а затем в base64. Хорошо, что строковый алфавит base64 не имеет этих символов, поэтому его можно безопасно использовать.
![Base64 Alphabet](https://i.stack.imgur.com/ibwJo.jpg)
Затем в функции AddUser введите ключ электронной почты base64 дочерний под основным дочерним "User2". Главный ребенок может быть любого имени, я собираюсь изменить его после этого. PutAsyn c поместит новые пользовательские данные в этот дочерний элемент электронной почты.
Обратите внимание, что «Пользователь», как видно из параметра функции AddUser, - это определенный мной класс, имеющий свойства пользователя, такие как имя, фамилия, адрес электронной почты, страна, телефон и т. Д.
public async Task<bool> AddUser(User newUser)
{
try
{
string userEmail = Convert.ToBase64String(Encoding.ASCII.GetBytes(newUser.Email));
await firebase
.Child("User2")
.Child(userEmail)
.PutAsync(newUser);
return true;
}
catch (Exception e)
{
Console.WriteLine($"Error:{e}");
return false;
}
}
И это сработало! На изображении ниже старый дочерний элемент «Users» имел автоматически сгенерированные ключи, а новый дочерний элемент «User2» имел ключ электронной почты base64. Не волнуйтесь, его легко получить в функции GetUser.
Электронное письмо "ibrahim155255@gmail.com" становится " aWJyYWhpbTE1NTI1NUBnbWFpbC5jb20 = " при преобразовании в base64.
![enter image description here](https://i.stack.imgur.com/78wQP.png)
В функции GetUser электронное письмо преобразуется в base64 так же, как в функции AddUser. Если дочерний ключ электронной почты base64 присутствует внутри дочернего элемента «User2», возвращаются пользовательские данные.
public async Task<User> GetUser(string email)
{
try
{
string userEmail = Convert.ToBase64String(Encoding.ASCII.GetBytes(email));
return (await firebase
.Child("User2")
.Child(userEmail)
.OnceSingleAsync<User>());
}
catch (Exception e)
{
Console.WriteLine($"Error:{e}");
return null;
}
}
Надеюсь, этот ответ полезен. Если это помогло вам, пожалуйста, ответьте, пожалуйста, я буду очень признателен.