指定的演员无效 - XamarinFirebase

时间:2017-07-11 19:44:11

标签: c# android xamarin xamarin.android

这是我的firebase数据库结构

Database Structure

在孩子中,有值,姓名,国家,年龄和 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, }} }

1 个答案:

答案 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.
            }

        }