我很好奇我在Android上的交易方法中使用交易方法时是否没有不利之处。
像这样
db.runTransaction(new Transaction.Function<Double>() {
@Override
public Double apply(Transaction transaction) throws
FirebaseFirestoreException {
DocumentSnapshot snapshot = transaction.get(sfDocRef);
double newPopulation = snapshot.getDouble("population") + 1;
if (newPopulation <= 1000000) {
db.runTransaction(new Transaction.Function<Double>() {
....
}
} else {
throw new FirebaseFirestoreException("Population too high",
FirebaseFirestoreException.Code.ABORTED);
}
}
答案 0 :(得分:1)
我强烈建议您不要这样做。如果与另一个也与任何同一文档执行事务的客户端发生冲突,则可以重试事务。您应该期望事务主体可以运行多次。这意味着您的内部交易可以执行一次以上,几乎可以肯定不会达到您想要的效果。可能还有其他不需要的副作用。例如,如果内部事务试图与外部事务使用任何相同的文档进行事务处理,您会怎么办?