Firestore runTransaction永远不会运行

时间:2019-05-24 00:45:36

标签: flutter google-cloud-firestore

我遇到了最奇怪的问题。有一天,runTransaction突然停止了完全运行。没有错误。没有消息。我放在那里的任何打印声明永远不会运行。没有。就像根本没有runTransaction语句一样。

我的代码与酒吧中的示例代码完全一样。如果我只是运行updatesetadd而没有事务,则它运行完美。

final DocumentReference postRef = Firestore.instance.document('all_tokens/123');
Firestore.instance.runTransaction((Transaction tx) async {
                  DocumentSnapshot postSnapshot = await tx.get(postRef);
                  if (postSnapshot.exists) {
                    await tx.update(postRef, <String, dynamic>{'likesCount': postSnapshot.data['likesCount'] + 1});
                  }else{
                    await tx.set(postRef, <String, dynamic>{'likesCount': postSnapshot.data['likesCount'] + 1});
                  }
                });

完全没有错误消息。 catch中没有任何内容,then中没有任何内容。整个事情永远不会进行。就像被跳过

这是我的pubspeck.yaml:

dependencies:
  flutter:
    sdk: flutter
  http: ^0.12.0
  font_awesome_flutter: ^8.2.0
  fluttertoast: ^3.0.4
  datetime_picker_formfield: ^0.1.7
  flutter_image_compress: ^0.4.0
  cloud_firestore: ^0.11.0+2
  firebase_auth: ^0.11.1
  google_sign_in: ^4.0.1+3
  firebase_messaging: ^4.0.0+3
  shared_preferences: ^0.5.2
  firebase_storage: ^3.0.0
  flutter_rating: ^0.0.2
  flutter_typeahead: ^1.4.0
  url_launcher: ^4.0.3
  flutter_facebook_login: ^2.0.0
  algolia: ^0.1.5
  geolocator: ^4.0.3
  provider: ^2.0.1

2 个答案:

答案 0 :(得分:0)

您有没有发现这个问题?我也遇到了同样的问题。

我的交易代码已经运行了好几个月,突然之间,交易根本就没有运行。没有例外,没有logcat输出,什么也没有。只是永不返回或调用回调。似乎等待中。据我所知,同时没有发生其他的Firestore操作,因此它没有被阻止。

再次运行了好几个月,然后突然停止了。

  Future<void> transactionUpdate(String path, Map<String, dynamic> json) async {
    DocumentReference doc = firestore.document(path);
    firestore.runTransaction((Transaction tx) async {
      DocumentSnapshot snapshot = await tx.get(doc);
      if (snapshot.exists) {
        await tx.update(doc, json);
      } else {
        await tx.set(doc, json);
      }
    });
  }

我正在使用cloud_firestore:0.12.0

[√] Flutter (Channel master, v1.6.6-pre.15, on Microsoft Windows [Version 10.0.17134.765], locale en-US)
    • Flutter version 1.6.6-pre.15 at C:\dev\libraries\flutter2\flutter
    • Framework revision 8139a368ea (7 hours ago), 2019-05-29 10:08:58 -0700
    • Engine revision 8dc3a4cde2
    • Dart version 2.3.2 (build 2.3.2-dev.0.0 e3edfd36b2)

[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at C:\dev\libraries\android-sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • ANDROID_HOME = C:\dev\libraries\android-sdk
    • Java binary at: C:\dev\tools\android-studio-ide-171.4402976-windows\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    • All Android licenses accepted.

[√] Android Studio (version 3.4)
    • Android Studio at C:\dev\tools\android-studio-ide-171.4402976-windows\android-studio
    • Flutter plugin version 35.3.1
    • Dart plugin version 183.6270
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)

答案 1 :(得分:0)

我得出结论,这是Flutter的最新版本引起了此问题。我最近升级到主频道中的最新频道,开始遇到同样的问题。一旦我在Stable频道中降级到最新版本,问题就消失了。

感谢crushman1 for reporting,并补充说降级对他有用。降级到最新的稳定版本对我也是如此。

可以找到降级步骤HERE