Я развертываю этот код в облачных функциях, получая Невозможно изменить зафиксированный WriteBatch, я пытался зафиксировать после получения каждой коллекции, но это неверный способ и является непоследовательным, не удалось обнаружить ошибку после попытки в течение нескольких часов.Также в коде, запускаемом в первый раз после холодного запуска, в этом посте есть та же проблема Пакетная запись в firebase cloud firestore , где создается
новая партия для каждого набора записей.в этом коде.
var batch = db.batch();
db.collection("myposts")
.doc(post_id)
.collection("fun")
.get()
.then(snapshot => {
return snapshot.forEach(doc => {
batch.delete(doc.ref);
});
})
.then(
db
.collection("relations_new")
.where("uid", "==", uid)
.get()
.then(snapshot => {
return snapshot.forEach(doc => {
batch.delete(doc.ref);
});
})
)
.then(
db
.collection("relation")
.where("uid", "==", uid)
.get()
.then(snapshot => {
return snapshot.forEach(doc => {
batch.delete(doc.ref);
});
})
.catch(err => {
console.log(err);
})
)
.then(
db
.collection("posts")
.doc(post_id)
.get()
.then(snap => {
return batch.delete(snap.ref);
})
.then(batch.commit())
)
.catch(err => {
console.log(err);
});`