C# WinForms中获取Firebase唯一键及数据读取异常排查
C# WinForms中Firebase数据读写问题
存储代码
我在C# Windows Forms项目中,通过以下代码将WhatsappElements类的对象存入Firebase:
class WhatsappElements { public string Number { get; set; } public string Message { get; set; } } WhatsappElements newwhatsapp = new WhatsappElements { Number = txt_number.Text + "&N", Message = txt_message.Text + "&M", }; await client.PushAsync("WhatsappElements/Data", newwhatsapp);
Firebase存储结构
数据存储后,Firebase中的结构如下(NBSUSIOSPPSWEIE是Firebase自动生成的唯一键):
- WhatsappElements - Data - NBSUSIOSPPSWEIE Number: [输入的号码]&N Message: [输入的消息]&M
读取代码
我在另一应用中用以下代码读取数据:
public async void getdAta() { var resp = await server.GetAsync("WhatsappElements/Data"); WhatsappElements element = resp.ResultAs<WhatsappElements>(); MessageBox.Show(element.Number); }
问题
运行读取代码后,弹出的对话框显示Number为空。请问:
- 出错的原因是什么?
- 如何正确读取数据?
- 如何获取Firebase生成的唯一键?
错误原因
PushAsync方法会在指定的WhatsappElements/Data路径下自动生成一个唯一随机键(比如你看到的NBSUSIOSPPSWEIE),实际的WhatsappElements对象是存储在这个唯一键的子路径下的。因此WhatsappElements/Data对应的是字典结构(键为唯一ID,值为对象),而不是直接的WhatsappElements对象。你直接用ResultAs<WhatsappElements>反序列化,无法匹配字典结构,导致对象属性为空。
正确读取数据的方式
方式1:读取所有对象(遍历字典)
将结果反序列化为Dictionary<string, WhatsappElements>,遍历字典即可获取所有对象:
public async void getdAta() { var resp = await server.GetAsync("WhatsappElements/Data"); var elementsDict = resp.ResultAs<Dictionary<string, WhatsappElements>>(); foreach (var item in elementsDict) { string uniqueKey = item.Key; WhatsappElements element = item.Value; MessageBox.Show($"号码:{element.Number}\n唯一键:{uniqueKey}"); } }
方式2:读取单个指定对象(已知唯一键)
如果知道目标对象的唯一键,可以直接访问该键的路径:
public async void getdAta() { // 替换成实际的唯一键 var resp = await server.GetAsync("WhatsappElements/Data/NBSUSIOSPPSWEIE"); WhatsappElements element = resp.ResultAs<WhatsappElements>(); MessageBox.Show(element.Number); }
获取Firebase生成的唯一键
有两种常用方式:
- 存储时直接获取:调用
PushAsync后,返回的响应中包含生成的唯一键:
var pushResult = await client.PushAsync("WhatsappElements/Data", newwhatsapp); string uniqueKey = pushResult.Key; // 得到Firebase生成的唯一键
- 读取时从字典中获取:如方式1中的
item.Key,每个字典键就是对应对象的唯一ID。
内容的提问来源于stack exchange,提问作者علي امجد علي كمال
相关产品推荐
相关产品推荐

