添加多个文档并在Firestore中接收ID

时间:2020-05-12 10:57:49

标签: android firebase sqlite google-cloud-firestore

在Firestore中作为一个批处理执行几次保存操作后,如何读取文档列表的结果?

在将其发送到Firestore后,我需要接收文档数据以删除SQLite中的注册。我的应用程序需要脱机工作,并在有互联网时立即发送所有文档。

我正在以这种方式发送(下面的代码),但是发送所有数据花费了很长时间

    List<Record> notUpdate = recordService.getNotUpdate();

    for (Record record : notUpdate) {

        Map<String, Object> field = new HashMap<>();
        field.put("operator", driverService.getByID(record.getFk_driver()).getName());
        field.put("operator_id", driverService.getByID(record.getFk_driver()).getUid());
        field.put("status", record.getStatus());
        field.put("fleet_type", sessionService.getDevice().getFkFleet());
        field.put("equipment", sessionService.getEquipment().getName());
        field.put("equipment_id", sessionService.getEquipment().getUid());
        field.put("device_id", sessionService.getDevice().getUid());
        field.put("date", DateUtilService.convertLongToTimestamp(record.getDate()));
        field.put("location", new GeoPoint(10, 20));

        collection.add(field)
                .addOnSuccessListener(documentReference -> {
                    recordService.delete(record);

                    if (activity instanceof MainActivity) {
                        Listener listener = (Listener) activity;
                        listener.onRecordUpdateListener();
                    }
                })
                .addOnFailureListener(Throwable::printStackTrace);
    }

我阅读了Firestore multiple write operations,但似乎无法使用WriteBatch读取文档,仅发送文档即可。如果有人知道其他解决方案,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

您的意思是对的-批处理只能写数据。它看不懂它们。如果要在写入文档后阅读文档,则必须等待批量写入完成,然后执行查询以读取文档。没有简单的解决方法。