Cloud Firestore 批量写入如何在离线模式下工作

Eri*_*rik 1 batch-updates google-cloud-firestore

在有关 Cloud Firestore批量写入的文档中,我读到“即使用户的设备处于离线状态,您也可以执行批量写入”。

\n\n

可以关闭它吗?或者默认情况下它是关闭的,因为文本显示“可以”。如果 Cloud Firestore 事务\xc2\xb4s 离线并且我希望批量写入执行相同操作,则该事务将会失败

\n\n

我感觉我必须检查以下结果OnCompleteListener

\n\n
batch.commit().addOnCompleteListener(new OnCompleteListener<Void>() {\n    @Override\n    public void onComplete(@NonNull Task<Void> task) {\n        // offline/online?? \n    }\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

我认为文档应该对此做出一些解释

\n

Gil*_*ert 5

Firestore 事务的存在使得可以从客户端执行原子读取-修改-写入操作。为了保证这一点,客户需要在线。

批量写入是一种有限的事务,专门用于允许用户即使在离线状态下也能够以全有或全无的方式更改多个文档。

如果您不需要或希望能够在离线时写入,只需使用常规事务:它将处理检查您是否在线,如果您离线,它将失败。您没有义务阅读交易中的任何内容。

检查批量写入的结果OnCompleteListener对于此目的不起作用。您无法阻止该回调中的任何内容,因为只有在写入成功应用于服务器后才会调用它。

  • 批量写入在 firestore 中相当于 updateChildren。您可以将 10 个更新放入一个批次中,它们将自动应用到服务器上。您的问题表明除非用户在线,否则您不想允许此操作继续进行。如果是这种情况,则使用事务而不是批量写入,因为它强制执行该要求。任何一种方法都允许您同时操作多个文档。 (2认同)