You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot集成Firestore查询用户UID遇Nil返回错误求助

排查Firebase Firestore查询返回Nil的思路

针对你在Godot中对接Firebase时,通过用户名查询UID返回Nil导致类型错误的问题,可按以下步骤排查:

  • 检查Firestore安全规则
    默认情况下Firestore会限制未认证用户的读写权限,若你的应用未完成用户认证,或者规则未允许对user_data集合的查询操作,会导致查询失败返回Nil。可临时将规则改为测试模式(仅限开发阶段):

    rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if true;
        }
      }
    }
    

    测试后记得改回严格规则。

  • 确认Firebase初始化状态
    确保在调用Firestore查询前,Firebase已完成初始化。可在启动脚本中添加初始化校验:

    func _ready():
      var init_success = await Firebase.initialize()
      if not init_success:
        print("Firebase初始化失败")
        return
    

    初始化失败会导致所有Firestore操作无有效返回。

  • 验证数据库字段匹配
    Firestore字段名大小写敏感,检查user_data集合中的文档是否确实存在小写的username字段,且字段值与你传入的查询参数完全一致(包括空格、大小写)。

  • 移除冗余的orderBy语句
    你的查询是精确匹配username,添加order_by属于冗余操作,且若未为username创建复合索引,可能触发Firestore的查询限制。先删除query.order_by("username", FirestoreQuery.DIRECTION.DESCENDING)这行代码,重新测试。

  • 在Firebase控制台直接测试查询
    登录Firebase控制台,进入Firestore数据库的"数据"页面,使用筛选功能创建相同的查询(筛选username等于测试值),若控制台也无法查到结果,说明是数据存储问题;若控制台能查到结果,则问题出在Godot插件或代码逻辑。

  • 排查插件兼容性与版本
    确认你使用的Firebase插件与当前Godot版本兼容(如Godot 4.x需对应支持4.x的插件),尝试更新插件到最新版本,或更换社区维护活跃的Firebase插件。

  • 查看插件内部错误信息
    临时修改插件的query函数,在返回结果前打印任务的错误详情:

    func query(query : FirestoreQuery) -> Array:
      # 保留原有任务创建代码
      var task = ...
      var result = await _handle_task_finished(task)
      if result == null:
        print("查询错误信息:", task.get_error_message()) # 视插件实际API调整
      return result if result != null else []
    

    这样能直接获取查询失败的具体原因,比如网络问题、索引缺失等。

内容的提问来源于stack exchange,提问作者William Braun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:52:44