如何将我的删除查询包装在 Firestore 的事务中?

jpl*_*s93 2 firebase google-cloud-firestore

例如,我可以从集合 x 中删除文档 x,然后从集合 y 中删除文档 y,但是如果出现问题,则回滚所有内容。根据文档, DocumentationReference.delete() 基本上是删除文档的唯一方法。

Fra*_*len 6

有一种Transaction.delete(DocumentReference)方法可以删除事务中的文档。

因此,要事务性地删除人口 < 100K 的所有城市(从文档中示例修改):

var citiesRef = db.collection("cities");

db.runTransaction(function(transaction) {
    var count = 0;
    return transaction.get(citiesRef).then(function(querySnapshot) {
        querySnapshot.forEach(function(doc) {
          if (doc.data().population <= 1000000) {
            transaction.delete(doc.ref);
            count = count + 1;
          }
        });
    });
}).then(function(count) {
    console.log("Deleted cities ", count);
}).catch(function(err) {
    console.error(err);
});
Run Code Online (Sandbox Code Playgroud)