例如,我可以从集合x中删除文档x,然后从集合y中删除文档y,但如果出现问题,则回滚所有内容。根据文档,DocumentationReference.delete()基本上是删除文档的唯一方法。
答案 0 :(得分:4)
在事务中删除文档有Transaction.delete(DocumentReference)
method。
因此,以交易方式删除所有人口
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);
});
答案 1 :(得分:0)
我使用batch method,如:
let batch = db.batch()
batch.deleteDocument(documentXref)
batch.deleteDocument(documentYref)
batch.commit() { error in
if let error = error {
print(error.localizedDescription)
}
}
请注意,即使离线也可以使用。因此,如果您希望在这种情况下操作失败,则应使用事务方法。