【问题标题】:Firestore collectionGroup query returns empty result in UnityFirestore collectionGroup 查询在 Unity 中返回空结果
【发布时间】:2021-08-04 16:48:46
【问题描述】:

我的 Firestore 数据库设置是

我想在“UserBasicInfo”子集合中找到“playerName”字段值。这是我的代码:

`

Firebase.Firestore.Query 查询 = db.CollectionGroup("UserBasicInfo").WhereEqualTo("playerName", name).Limit(1);

var queryNameTask = query.GetSnapshotAsync();

while (!queryNameTask.IsCompleted) 等待Task.Yield();

        var querySnapshot = queryNameTask.Result;

        foreach (DocumentSnapshot documentSnapshot in querySnapshot.Documents)
        {
            DatabasePlayerStats databasePlayerStats = documentSnapshot.ConvertTo<DatabasePlayerStats>();
            searchingName = databasePlayerStats.playerName;
        }`

即使“玩家名称”字段值查询中存在“名称”,也总是返回空。

这是我的索引豁免:

【问题讨论】:

  • 我不完全明白你想要获取什么,你想获取包含player_uCI4 字段的文档吗?或者你到底想得到什么?
  • 是的,我想获取“playerName”字段值与查询搜索名称相同的文档。在本例中,这是“player_uCI4”。
  • 我认为你需要用 querySnapshot 做一个承诺,你可以看到这个 doc 可以帮助你
  • 感谢您的回复,但实际上我在 c# 中使用异步等待,这是我用于查询的其余代码:while (!queryNameTask.IsCompleted) await Task.Yield(); var querySnapshot = queryNameTask.Result;我认为与 promise 相同的功能
  • 我尝试了另一个查询相同的路径,但这个条件是 WhereGreaterThanOrEqualTo。并且令人惊讶的是查询结果不是空的,但它提供了 WhereGreaterThan 条件但不提供相等条件。这是我的新查询代码:` Query query = db.CollectionGroup("UserBasicInfo").WhereGreaterThanOrEqualTo("playerName", name); var queryNameTask = query.GetSnapshotAsync(); while (!queryNameTask.IsCompleted) 等待 Task.Yield(); var querySnapshot2 = queryNameTask.Result; ` 问题是否仅与相等查询有关?

标签: c# firebase unity3d google-cloud-firestore


【解决方案1】:

我尝试了另一个查询相同的路径,但这个条件是 WhereGreaterThanOrEqualTo。并且令人惊讶的是查询结果不是空的,但它提供了 WhereGreaterThan 条件但不提供相等条件。这是我的新查询代码:

Query query = db.CollectionGroup("UserBasicInfo").WhereGreaterThanOrEqualTo("playerName", name); var queryNameTask = query.GetSnapshotAsync(); while (!queryNameTask.IsCompleted) await Task.Yield(); var querySnapshot2 = queryNameTask.Result; 

问题可能只与相等查询有关吗?

【讨论】:

  • 我作为参数发送给查询的字符串值是 textmeshpro 组件的文本值。尽管此值将自身显示为写入 textmeshpro 组件的字符串表达式,但它始终在文本值中包含一个额外的单引号。这导致 firebase 查询无法正常工作。但我没有注意到它,因为调试时字符串值看起来很正常。使用 for 导航字符串表达式时弹出错误。因此,firebase 查询可以正常工作。
  • 非常好的评论我也会赞成答案,我希望我能以任何方式帮助你,顺便说一句,我修正了一些问题,所以看起来更好
猜你喜欢
  • 2021-11-20
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 2021-03-18
  • 2019-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多