我正在处理一组Firestore集合和文档。因为我要设置双向引用和其他功能,所以它的写入和读取量很大。 多个文档被多次写入。
由于Firestore提供了脱机功能,是否可以通过本地准备所有数据然后将其发送到服务器来减少写入次数?
我正在使用Admin SDK。
答案 0 :(得分:2)
这取决于您的意思。无论何时或以何种方式编写文档,一次编写文档总是要花费一份文档。 Batch writes丝毫不减少所写文档的数量,它们只是使所有文档写入均在同一时间生效。
如果您要对单个文档进行大量更改以使其稍后生效,请随时执行此操作。只要确定了最终文档的外观就可以撰写文档,而不会很快。
答案 1 :(得分:1)
我正在从Google Appengine标准Python 2.7 NDB迁移到Svelte,Firestore和RxFire。
通过使用数据对象映射将数百个appengine NDB实体(数据存储/数据对象)批处理到单个文档中,我能够显着减少读写次数。
每个数据对象都有一个batchId属性,以优化(批处理)批量写入/文档写入。 (batchId = docId)
现在大多数查询是使用过滤器在客户端中完成的。这导致使用RxFire可观察对象进行非常简单的响应式Firestore查询。这也大大减少了复合索引的数量。
doc:
batchId: docId
map: data Objects
batchId: docId
other props ...
....
我还使用数据对象的映射将各种配置和定义数据放入单个文档中。此设置易于维护,只需阅读一次文档即可使用。文档读取是可观察到的对文档更改做出反应的一部分。