当前位置: 首页 > 知识库问答 >
问题:

尝试删除已创建的文档后,FirebaseFireStore返回true for isSuccess

於和志
2023-03-14

我在测试我的应用程序后意外发现了这个。我有一个recycleListView,其中包含cardview,每个cardview都有一个来自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()
}

Collection_A

>

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

    >

  • 名称[字段]:字符串

    计数[字段]:Int

    dateInWeek[字段]:映射

  • 共有1个答案

    谭骏
    2023-03-14

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

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

    如果要自动检测文档是否存在并将其删除,请使用事务。

     类似资料:
    • 我的java有点生锈,好久没用了 我想做的是让用户定义一个日期(3个整数包含年、月和日)并将其转换为日期对象。 我有一个方法如下,这就是我在谷歌搜索后得到的结果。 它被下面的人调用,现在刚刚被打印出来 问题是日期完全错误。我想要开始日期为2014-01-01,结束日期为2014-12-31,但打印出来的是 开始时间:8月7日星期六00:00:01 GMT 6 - 开始时间:8月7日星期六00:00

    • 问题内容: 我正在使用Log4j作为我正在研究的项目中的日志记录框架。我有以下情况:Log4j配置为将日志写入日志文件。有时,此日志文件将复制到另一个目标并删除。日志记录框架可以正常工作,但是由于已删除日志,因此日志未写入日志文件。有什么方法可以告诉Log4j重新创建文件并继续将日志写入日志文件。 最好的问候,拉希德 问题答案: 我研究了log4j的来源,发现log4j无法创建新的日志文件,它只是

    • 我使用保存通过调用方法。然后,我尝试使用方法。但当我尝试这样做时,我得到了一个。这其中的原因是什么?我应该如何解决这个问题?

    • 我试图使用DocuSign REST API创建一个包含多个文档的信封,我创建了一个C#控制台应用程序,并以JSON格式在请求中写入了信封参数。我得到了错误代码“信封不完整”,我试图将我的请求与REST API Docusign指南中的请求进行比较,但我看不到我遗漏了什么。下面是我的示例代码: POST https://demo.docusign.net/restapi/v2/accounts/2

    • 通过指定文档的 /index/type/id 路径可以删除文档: $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id' ]; // Delete doc at /my_index/my_type/my_id $response = $client->delete($params);