【发布时间】: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