当前位置: 首页 > 知识库问答 >
问题:

执行事务时出错,必须同时写入事务中读取的每个文档。,空

丰佐
2023-03-14

我在使用Flutter查询Firestore数据库时收到了这个错误。

E/Flutter(17558):[错误:Flutter/lib/ui/ui_dart_state.cc(157)]未处理的异常:PlatformException(执行事务时出错,必须写入事务中读取的每个文档。,空)

Future getFavorites(String uid) {
  DocumentReference favoritesReference =
      Firestore.instance.collection('users').document(uid);
  List favoritesList = [];

  return Firestore.instance.runTransaction((Transaction tx) async {
    DocumentSnapshot postSnapshot = await tx.get(favoritesReference);
    var length;
    if (postSnapshot.exists) {
      length = postSnapshot.data['favorites'].length;
    }

    print(length);
  });
}

共有1个答案

吕华彩
2023-03-14

看来你不是在写你的文件。事务中读取的每个文档都应该被写入。然后,可以添加与每个文档读取相对应的set()update()delete()

如果不需要写回FavoritesReference,那么在事务之前而不是在事务内部读取它。

 类似资料:
  • 我不熟悉动态信息,所以这似乎是一个非常基本的问题,但我还没有找到一个明确的答案来解释动态信息流中读写事务之间的实际区别。 Amazon Kinesis Limits的相关部分: GetShardIterator可以为每个打开的碎片每秒提供多达5个事务 GetRecords可以检索10 MB的数据 每个碎片每秒最多可支持5个事务进行读取,最大总数据读取速率为每秒2 MB 每个碎片每秒最多可支持102

  • 我试图弄清楚如何从angular 6/typescript应用程序向firebase数据库编写事务。 下面是我使用的一个工作示例作为指导: 我确定的关键部分如下: 1)创建一个数组来保存事务:const transactions=[]; 2)开始事务:返回db.runtransactions(function(transactions){… 3)使用事务:transaction.set(newPh

  • 如何实现一个事务读取的行不允许另一个事务读取的情况? 从我的一个包含列A-F的表中,我需要选择。使用max值并根据一些计算,我将不得不执行其他插入语句。 在可序列化隔离级别下,2个事务读取相同的最大值。这将导致一个事务的锁等待和另一个事务上的死锁。

  • 一、忌问招聘人数 最明显的就是问“你们要几个?”对用人单位来讲,招一个是招,招十个也是招。问题不在于招几个,而是你有没有这百分之一或十分之一或独一无二的实力和竞争力。“你们要不要女的?”这样询问的女性,首先给自己打了“折扣”,是一种缺乏自信的表现。 二、忌急问待遇 “你们的待遇怎么样?”“你们管吃住吗?电话费、车费报不报销?”有些应聘者一见面就急着问这些,不但让对方反感,而且会让对方产生“工作还没

  • 例如,如果来自不同设备的1个以上用户同时对同一文档进行交易,则交易失败,应用程序崩溃。 如何解决这个问题? 错误日志 链接到问题