【问题标题】:FirebaseFireStore return true for isSuccess after I try to delete a document that already created在我尝试删除已创建的文档后,FirebaseFireStore 为 isSuccess 返回 true
【发布时间】:2019-04-25 00:45:24
【问题描述】:

我在测试我的应用程序后偶然发现了这个。我有一个包含 cardview 的 recycleListView,每个都有一个来自 firestore 的文档。在我随机删除一些文档后,它会从 FirebaseFirestore 中消失,但是当我再次尝试删除它时,它仍然返回 isSuccess() true。谁能解释一下为什么会这样?

这是我用来从集合中删除文档的代码。

FirebaseFirestore.getInstance().collection("Collection_A")
    .document(list[position].id).delete().apply {
     addOnCompleteListener { task ->
     if (task.isComplete){
         Log.d("Complete", "Task complete")
     }
     if (task.isSuccessful) {
         Log.d("Complete", "Task complete and Success")
     } else {
         Log.d("Complete", "Task complete but not success")
     }
}
addOnCanceledListener {
    Log.d("Cancel", "Delete data canceled")
}
addOnFailureListener { ex ->
    ex.printStackTrace()
}

我的文档结构

集合_A

  • 文档…[文档ID随机生成]

    • 名称[字段]:字符串

    • 计数[字段]:整数

    • dateInWeek [field]: Map

【问题讨论】:

  • 请添加您正在使用的代码和您的数据库结构以及此类文档的示例。
  • 我已经添加了我的代码和示例数据结构。 :)
  • 我不明白delete() 调用之后的apply 调用是什么,list[position].id 的值是什么,或者该列表是如何定义的。如果您提供数据库的屏幕截图,我可能会更好。

标签: android firebase google-cloud-firestore


【解决方案1】:

我刚刚快速测试了一下,似乎在 JavaScript 上,即使文档不再存在,删除也被认为是成功的。因此,这听起来像预期的那样工作,您可能应该将其标记为“当文档不再存在于数据库中时任务成功”。仅当您无权删除文档(无论它是否存在)时,该任务才会失败。

如果要测试文档是否存在,请使用get() 操作。

如果你想原子地检测文档是否存在并删除它,使用事务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2018-04-26
    • 2017-07-10
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多