我正在使用 firebase-database-dotnet 包在 .NET MAUI 中使用 Firebase,需要帮助捕获从 Firebase 检索到的产品的节点密钥(ID)。
Firebase中的数据结构如下:
products
product1
category: "dairy"
description: "Sliced Arequipe cheese, ideal for accompanying your meals."
name: "Arequipe Cheese Sliced"
price: 10.99
product10
category: "dairy"
description: "Box of 30 Kikes eggs."
name: "Kikes Eggs 30 pcs"
price: 3.99
我有以下方法从 Firebase 检索产品:
public async Task<IEnumerable<T>> GetItemsAsync(bool forceRefresh = false)
{
try
{
var firebaseObjects = await _query
.OnceAsync<T>();
return firebaseObjects
.Select(x => x.Object);// Devuelve los FirebaseObject<T> completos
}
catch (Exception ex)
{
return null;
}
}
此方法返回产品对象,但我不知道如何捕获节点键(product1,product10等)。
现在,我想实现一个在 Firebase 中保存选定产品的方法,并且需要捕获该产品对应的节点 ID。例如:
[RelayCommand]
public async Task SaveProduct(Product product)
{
// Here, I want to use the GetItemsAsync method to retrieve the existing products.
// How can I capture the node ID (such as 'product1' or 'product10') of the selected product?
}
是否可以在表中包含 ID,或者这是否被视为一种不好的做法?我如何才能在当前数据库中捕获节点密钥以及数据?
一般来说,你说的
product1
、product10
等等都是自动生成的。为了更新列表中的特殊项目
products
,我们通常会添加一个字段并保证其值是唯一的。例如:
然后,如果我们要更新
products
列表中的特殊产品,我们可以先遍历产品列表并通过字段找到该项目ID
。您可以参考下面的代码片段: