unity3d Firebase数据库:按Unity颁发名称或ID搜索

9jyewag0  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(136)

我正在使用firebase实时数据库和unityc #;我想按产品名称或ID搜索,但在文档或其他地方没有找到任何解决方案。
我尝试了:orderbychild("id").equalTo(MyId);,但统一得到粉碎,直到我删除orderbychild()功能。
我也试着用产品的所有数据获取快照,然后用C#过滤我的数据,但是没有人这样做。我想要的只是查询我想和他的孩子一起工作的产品。
下面是我在Firebase中数据结构:

[{
  "id": 1001,
  "price": "265$",
  "product_name": "dell",
  "type": "monitor"
}, {
  "id": 1002,
  "price": "320$",
  "product_name": "ibm",
  "type": "laptop"
}, {
  "id": 1003,
  "price": "542$",
  "product_name": "hp",
  "type": "workstation"
}]

下面是我的代码:

public void getProduct()
{
    FirebaseDatabase.DefaultInstance.GetReference("").OrderByChild("id").EqualTo("1001").ValueChanged += S_Value_Changed;
}

private void S_Value_Changed(object sender, ValueChangedEventArgs e)
{

    var players = e.Snapshot;
    Debug.Log(players.ChildrenCount);
    foreach (var player in players.Children)
    {
        if (player.Child("code").GetValue(true).ToString() == "1001")
            Debug.Log(player.Child("product_name").GetValue(true).ToString());
    }
}

注意:我不想让id作为产品的父,因为我想搜索也使用产品名称。

oo7oh9g9

oo7oh9g91#

Firebase中的比较操作是类型敏感的。您的代码检查EqualTo("1001"),但JSON中的值1001是一个数字。这两个值不相同,因此查询不会返回。
若要比较数值:

OrderByChild("id").EqualTo(1001)

相关问题