我想知道是否在Firebase中批量对同一文档执行多次更新,这会导致一次写入还是多次写入?
例如,在此示例代码中(在javascript中):
const doc = getDocumentReference();
batch.update(doc, { foo: "a" });
batch.update(doc, { bar: "b" });
batch.commit();
是对文档进行一次写入来更新所有内容,还是两次写入,每次更新写入一次?
如果两个操作之一是“设置”而不是“更新”,答案是否会改变?
提前致谢
我还没有找到有关如何计算写入次数的参考,但是我发现它很有趣,并试图自己解决。我准备了测试,并在Google Cloud Platform上查看了Metrics Explorer(Firebase数据库也可见),它可以显示writes_count。
我准备了以下代码:
一次添加整个对象:
let test = db.collection("test").doc("sdaasd3")
test.set({})
let update = {}
for (let i = 0; i < 100; i++) {
update[i.toString()] = i;
}
test.update(update);
然后更新100次:
let test = db.collection("test").doc("sdaasd2")
test.set({})
for (let i = 0; i < 100; i++) {
let update = {}
update[i.toString()] = i;
test.update(update)
}
并分批提交:
let test = db.collection("test").doc("sdaasd")
test.set({})
const batch = db.batch();
for (let i = 0; i < 100; i++) {
let update = {}
update[i.toString()] = i;
batch.update(test, update)
}
batch.commit();
我执行了它们,似乎批量提交与立即更新整个对象完全相同,并且需要进行2次写入(我认为已设置了一个,用于清除Firebase中的对象)。更新100次时需要101次写入。外观如下(按帖子12:57,01:01,01:07的顺序执行)
我不确定此测试是否足够满足您的需求,但是您可以使用GCP上的Matrix Explorer自行分析。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句