“每个循环”中的Firestore事务或事务中的循环

时间:2019-10-10 11:56:41

标签: javascript google-cloud-firestore

我有一个循环,该循环使用事务将数据添加到Firestore数据库。

jQuery.each(objIN, function (key, value) {
    var product = products.doc(key);
    db.runTransaction(function (transaction) {
        return transaction.get(product).then(function (doc) {
            ...
            ...
            transaction.update(product, {
                productQTY: newProductQTY,
                [warehouseIN]: newSelectedWarehouseQTY

            });

        });

    }).then(function (newProductQTY) {
        console.log("New product qty ", newProductQTY);
    }).catch(function (err) {
        // This will be an "population is too big" error.
        console.error(err);
    });
})

可以这样做吗?还是最好在事务中放入循环。 批量更新Firestore的最佳选择是什么?

1 个答案:

答案 0 :(得分:0)

Firestore支持两个批量更新语句(事务和批处理),以帮助确保多个文档之间的数据一致性。使用批量更新不会提高性能。实际上,如果更新中不需要跨文档一致性,则运行单独的小更新通常会更快,因为有机会并行化这些更新(在客户端代码中)。

所以:是的,你在做什么很好。 :)