【发布时间】:2020-03-18 06:51:38
【问题描述】:
我想创建用户电子邮件密钥,而不是自动生成的密钥。我想这样做的原因是能够查询该特定电子邮件并获取该用户数据,而不是从不方便的“用户”子数据中获取所有用户,尤其是在用户数量增加的情况下。
我正在使用FirebaseDatabase.Net,它可以作为 nuget 使用。它是 Firebase 实时数据库 REST API 之上的包装器。
使用自动生成的密钥将新用户添加到实时数据库中,如下所示。如果这些键是用户电子邮件,也许我可以查询用户电子邮件并获取特定的电子邮件子数据,如下面的代码:
await firebase
.Child("Users")
.Child("user1@email.com")
.OnceSingleAsync<User>());
我正在使用示例示例中的代码。下面的函数分别是获取所有用户、添加新用途和获取用户。
public FirebaseClient firebase = new FirebaseClient("firebaseurl");
public async Task<List<User>> GetAllUsers()
{
return (await firebase
.Child("Users")
.OnceAsync<User>()).Select(item => new User
{
Firstname = item.Object.Firstname,
Lastname = item.Object.Lastname,
Username = item.Object.Username,
Email = item.Object.Email,
Password = item.Object.Password,
}).ToList();
}
public async Task<User> GetUser(string email)
{
var AllUsers = await GetAllUsers();
await firebase
.Child("Users")
.OnceAsync<User>();
return AllUsers.Where(a => a.Email == email).FirstOrDefault();
}
public async Task<bool> AddUser(User newUser)
{
try
{
await firebase
.Child("Users")
.PostAsync(newUser);
return true;
}
catch (Exception e)
{
Console.WriteLine($"Error:{e}");
return false;
}
}
请指导我创建电子邮件密钥而不是自动生成的密钥,以便我可以使用电子邮件密钥请求特定用户数据,而不是获取所有用户。
【问题讨论】:
标签: c# firebase firebase-realtime-database xamarin.forms