批处理和承诺之间的区别

J. *_*Doe 2 firebase es6-promise google-cloud-firestore

当我想从 Cloud Functions 中对 Cloud Firestore 进行多次写入、删除或更新时,我通常会使用 promise 来执行此操作:

var proms = []
proms.push(sometask)
return Promises.all(proms)
Run Code Online (Sandbox Code Playgroud)

但是我遇到了批次:https : //firebase.google.com/docs/firestore/manage-data/transactions#batched-writes

我认为这看起来像这样:

var batch = db.batch();
batch.update(sometask)
return batch.commit();
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别?

Fra*_*len 5

当你Promise.all对多个操作进行操作时,这些操作仍然是一个一个地发送到服务器。每个操作都可能单独失败,而其他操作会成功。

当您使用批量写入(或事务)时,您的操作将通过一个命令发送到服务器。这意味着它们要么全部失败,要么全部成功。