【问题标题】:Firebase Firestore not writing any valueFirebase Firestore 未写入任何值
【发布时间】:2020-03-04 14:16:52
【问题描述】:

我正在使用 Firebase Firestore,但它没有存储任何值,也没有给出任何错误消息。

    private var mCustomerDatabase : FirebaseFirestore =  FirebaseFirestore.getInstance()
    override fun saveUserInfo(uid: String, profile: Database.UserProfile) {
        Log.d(TAG, "saveUserInfo -Inside")

        mCustomerDatabase
            .collection("app")
            .document("users")
            .collection("customers")
            .document(uid)
            .set(profile, SetOptions.merge())
            .addOnSuccessListener { Log.d(TAG, "saveUserInfo - DocumentSnapshot successfully written!") }
            .addOnFailureListener { e -> Log.w(TAG, "saveUserInfo - Error writing document", e) }

    }

Database.UserProfile 是类似于 Google“自定义对象”示例的数据类(显然与其他变量一起使用):

data class City(
    val name: String? = null,
    val state: String? = null,
    val country: String? = null,
    val isCapital: Boolean? = null,
    val population: Long? = null,
    val regions: List<String>? = null
)

Firebase 的规则:

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

奇怪的是没有错误信息,它只是不起作用。 消息(saveUserInfo -Inside)被打印出来,但既没有给出成功日志,也没有给出错误日志。

它位于一个名为 model 的单独模块中 - 我不知道这是否会影响,但应该不会。

可能是什么? - 我在 onCreate 上进行了测试,它使用相同的代码正常编写。所以我放弃了导入或配置错误。

更新:我已经尝试了文档中的每个示例代码,但都不起作用。由于根本没有消息我想那一定是我正在使用模块化应用程序,因此在模块模型上实现 firebase 并没有找到具有 google 服务的 gradle app .有趣的是RealTime数据库工作正常,我认为这可能是FireStone的一些错误功能。

我已经向谷歌报告了,因为即使是我这边的一些错误,它也应该有一些信息来说明我做错了什么......

我想知道是否有更多人遇到此问题。如果您可以尝试在名为 model 的模块中调用 Firebase 函数 - 您只需将一些 firebase auth uid 传递给数据库并尝试使用此 uid 创建一个文档,也许您可​​以重现错误并查看是否真的是一个错误

【问题讨论】:

  • 如何检查set() 操作的结果?在控制台中?
  • 我在 Android Studio LogCat 和 Firebase 控制台上检查过 - 未注册任何写入并更改 firestore 集合
  • 您从代码的哪个位置调用saveUserInfo() 方法?
  • 从RegisterActivity.kt,我在处理成功的firebase auth createUserWithEmailAndPassword和字段检查时调用它(检查它是否为空或无效)

标签: android firebase google-cloud-firestore


【解决方案1】:

我在 react js 中也遇到了这个问题,我的错误是我使用了 firebase.auth.signout() 方法,然后触发了 firestore 查询。 我删除了 auth.signout() 并且它起作用了

【讨论】:

    【解决方案2】:

    对我来说,问题是域。转到控制台/身份验证/授权域并检查您的域是否在列表中。如果不是,则写入不起作用(没有错误)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 2020-06-04
      相关资源
      最近更新 更多