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

时间:2020-06-08 13:28:55

标签: firebase flutter google-cloud-firestore

使用Flutter查询Firestore数据库时,我收到此错误。

E / flutter(17558):[错误:flutter / lib / ui / ui_dart_state.cc(157)]未处理的异常:PlatformException(执行事务错误,在事务中读取的每个文档也必须写入。,null)< / p>

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 个答案:

答案 0 :(得分:1)

似乎您没有写文档。在交易中读取的每个文档都应写入。然后,您可以添加与每个文档读取相对应的set()update()delete()

如果您不需要写回favoritesReference,请在交易之前而不是交易内部进行读取。