在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读取文档,仅发送文档即可。如果有人知道其他解决方案,我将不胜感激。
答案 0 :(得分:2)
您的意思是对的-批处理只能写数据。它看不懂它们。如果要在写入文档后阅读文档,则必须等待批量写入完成,然后执行查询以读取文档。没有简单的解决方法。