如何知道特定呼叫是否删除了FirebaseFirestore中的文档?



我写了这样的交易:

db.runTransaction(new Transaction.Function<Void>() {
@Override
public Void apply(Transaction transaction) throws FirebaseFirestoreException {
DocumentSnapshot documentSnapshot = transaction.get(deleteRef);
if(documentSnapshot.exists())
{
transaction.delete(deleteRef);    
}
return null;
}
}).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
// implement logic
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});

现在,当 2 个客户端 A 和 B 同时运行此事务时,根据此代码,只有一个可以成功,并且将实现相应的逻辑。

但是,不幸的是,由于以下错误,此事务失败:

事务中读取的每个文档也必须写入。

请帮忙,谢谢。

听起来您实际上希望事务按指示失败(因为它处于不应进行文档更新的状态(。 首先,考虑忽略该消息,因为这会告诉您交易不成功的原因,并且您知道这不是问题。

其次,如果您不喜欢该错误消息,请尝试在不应对先前读取的文档进行任何更改的情况下从事务处理程序中抛出一个新的未经检查的异常(例如 RuntimeException(。 您可能会在任务错误处理程序中收到新的错误消息,但结果将是相同的 - 不对任何文档进行任何更改。

相关内容

  • 没有找到相关文章

最新更新