【问题标题】:Firestore Kotlin Android Colleaction.add() exceptionFirestore Kotlin Android Colleaction.add() 异常
【发布时间】:2018-05-06 14:21:54
【问题描述】:

我正在使用 Kotlin 进行编程。当我使用

添加文档时
collectionRef
                .add(settlement) // Adds Auto-ID
                .addOnSuccessListener({ documentReference ->
                    Log.d("Add Doc", "DocumentSnapshot written with ID: " + documentReference.id)
                })
                .addOnFailureListener({ e ->
                    Log.w("Add Doc Failed", "Error adding document", e)
                })
                .addOnCompleteListener({ task ->
                    if (task.getException() != null) {
                        Log.w("Add Doc Failed", "Error adding document", task.getException())
                    }
                    if (task.isComplete()) { //try task.isSuccessful() if this is what you are looking for
                        Log.w("Add Doc Failed", "Error adding document")
                    }
                })

它总是抛出异常,addOnFailureListener 根本没有捕获:

05-06 14:14:18.091 28113-28126/com.plabs.settle E/StorageHelpers: Failed to turn object into JSON
    java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONObject com.google.firebase.auth.internal.zzm.zzbf()' on a null object reference
        at com.google.firebase.auth.internal.zzz.zzi(Unknown Source:116)
        at com.google.firebase.auth.internal.zzz.zzg(Unknown Source:3)
        at com.google.firebase.auth.FirebaseAuth.zza(Unknown Source:92)
        at com.google.firebase.auth.zzm.zza(Unknown Source:3)
        at com.google.firebase.auth.api.internal.zzaw.zzaa(Unknown Source:27)
        at com.google.firebase.auth.api.internal.zzcy.zzal(Unknown Source:0)
        at com.google.firebase.auth.api.internal.zzcy.zza(Unknown Source:0)
        at com.google.firebase.auth.api.internal.zzdb.zzb(Unknown Source:41)
        at com.google.firebase.auth.api.internal.zzci.dispatchTransaction(Unknown Source:139)
        at com.google.android.gms.internal.firebase_auth.zzb.onTransact(Unknown Source:22)
        at android.os.Binder.execTransact(Binder.java:726)
05-06 14:14:18.101 28113-28126/com.plabs.settle W/Binder: Caught a RuntimeException from the binder stub implementation.
    com.google.android.gms.internal.firebase_auth.zzv: java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONObject com.google.firebase.auth.internal.zzm.zzbf()' on a null object reference
        at com.google.firebase.auth.internal.zzz.zzi(Unknown Source:140)
        at com.google.firebase.auth.internal.zzz.zzg(Unknown Source:3)
        at com.google.firebase.auth.FirebaseAuth.zza(Unknown Source:92)
        at com.google.firebase.auth.zzm.zza(Unknown Source:3)
        at com.google.firebase.auth.api.internal.zzaw.zzaa(Unknown Source:27)
        at com.google.firebase.auth.api.internal.zzcy.zzal(Unknown Source:0)
        at com.google.firebase.auth.api.internal.zzcy.zza(Unknown Source:0)
        at com.google.firebase.auth.api.internal.zzdb.zzb(Unknown Source:41)
        at com.google.firebase.auth.api.internal.zzci.dispatchTransaction(Unknown Source:139)
        at com.google.android.gms.internal.firebase_auth.zzb.onTransact(Unknown Source:22)
        at android.os.Binder.execTransact(Binder.java:726)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONObject com.google.firebase.auth.internal.zzm.zzbf()' on a null object reference
        at com.google.firebase.auth.internal.zzz.zzi(Unknown Source:116)
        at com.google.firebase.auth.internal.zzz.zzg(Unknown Source:3) 
        at com.google.firebase.auth.FirebaseAuth.zza(Unknown Source:92) 
        at com.google.firebase.auth.zzm.zza(Unknown Source:3) 
        at com.google.firebase.auth.api.internal.zzaw.zzaa(Unknown Source:27) 
        at com.google.firebase.auth.api.internal.zzcy.zzal(Unknown Source:0) 
        at com.google.firebase.auth.api.internal.zzcy.zza(Unknown Source:0) 
        at com.google.firebase.auth.api.internal.zzdb.zzb(Unknown Source:41) 
        at com.google.firebase.auth.api.internal.zzci.dispatchTransaction(Unknown Source:139) 
        at com.google.android.gms.internal.firebase_auth.zzb.onTransact(Unknown Source:22) 
        at android.os.Binder.execTransact(Binder.java:726)

我做错了什么,如果我调用 collectionRef.get() 我得到了到目前为止添加的所有记录,但没有显示在 Firestore 控制台上。

帮我解决这个问题。

【问题讨论】:

    标签: android kotlin google-cloud-firestore


    【解决方案1】:

    您的 settlement 对象似乎包含 Firebase 用户对象,Firestore 客户端无法将其序列化为 JSON。

    Firebase SDK 只能处理简单 JSON 对象的序列化/反序列化,因此您必须在自己的代码中处理用户类。

    【讨论】:

    • 结算对象中只有用户身份验证 ID。
    【解决方案2】:

    我认为问题不在您的代码中。将 Firebase 升级到 15.0.2 后,我遇到了同样的错误。

    降级到 15.0.0,它又可以工作了。

    【讨论】:

    • 与widemos类似,我在升级到Firebase-Firestore 16.0.0后得到了这个。降级回 15.0.0 清除了这个错误
    • 有趣的是,它只在发布版本中崩溃,其中 debuggable 设置为 false。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2020-08-28
    • 2020-04-05
    • 2019-05-25
    相关资源
    最近更新 更多