这是我的firebase数据库结构
在孩子中,有值,姓名,国家,年龄和 Uid 。 Uid 是我问题的重点。
我尝试根据当前登录用户获取节点(Chat)的子节点。
我基本上试图在这里做一个比较,firebase应该让我的孩子只有Uid = user.uid
。即当前登录的用户。我认为Equals()
可以做到这一点,但我得到了一个错误的演员。
此行var items = snapshot.Children?.ToEnumerable<DataSnapshot>().Equals(user.uid).ToString;
public void OnDataChange(DataSnapshot snapshot)
{
var items = snapshot.Children?.ToEnumerable<DataSnapshot>().Equals(user.uid).ToString;
var key = snapshot.Key;
HashMap map;
foreach (DataSnapshot item in items)
{
}
控制台
my snapshot test: DataSnapshot { key = Chat, value = {-KomfGbZxCGESgyo1PFT={Name=Testing , Ref=7YB3mxMRXxW4lzhbhxi1bx7K4Pf1,
}, -KomcJyR5dCxFucJSB0I={Name=Hi, Ref=K6TEpccn1TbB32T8ThFsYnIl6Wm2, }} }
答案 0 :(得分:0)
如果您想根据Ref
属性过滤用户,我建议您在foreach循环中创建一个if语句来过滤该项:
public void OnDataChange(DataSnapshot snapshot)
{
var items = snapshot.Children?.ToEnumerable<DataSnapshot>();
HashMap map;
foreach (DataSnapshot item in items)
{
//filter the user first
map = (HashMap)item.Value;
string userId = map.Get("Ref")?.ToString();
if (userId!=null&& userId == user.uid)
{
//do what you want to do here.
}
}