【问题标题】:Flutter & Firestore: How to check the commit() of the batch is a success or not?Flutter & Firestore:如何检查批处理的 commit() 是否成功?
【发布时间】:2022-10-14 01:47:52
【问题描述】:

基本代码是:

Future batchSet() async {
  WriteBatch batch = FirebaseFirestore.instance.batch();
  for (var value in dataList) {
    batch.set(FirebaseFirestore.instance.collection('batch').doc(), {
      'createAt': FieldValue.serverTimestamp(),
      'data': value,
    });
  }
  await batch.commit();
}

提交时如何检查结果?

我试过await batch.commit().then((value) {});value 类型是无效的,不能用value 做任何事情。

或者我只是使用这个:

try {
    await batch.commit();
  } catch (e) {}

如果我只使用 commit() 的 try/catch,这项工作是否正常?

【问题讨论】:

  • 我解释了下面的流程。如果这不能回答您的问题,请对其进行编辑以解释您期望成功提交的结果类型。

标签: flutter firebase google-cloud-firestore


【解决方案1】:

一个承诺可以以两种方式结束:

  • 它可以解析,在这种情况下,它的then 子句将在调用结果作为参数传递的情况下执行。在batch.commit 的情况下,确实没有结果。
  • 或者它可以被拒绝,在这种情况下,它的catch 子句将使用错误对象执行以指示发生了什么问题。

由于您使用的是async/await,因此then 子句本质上是在awaited 调用之后的同一代码块中的代码。要捕获拒绝,请使用 try-catch 块,就像您在上一个 sn-p 中所做的那样。 e 参数包含有关承诺/提交失败原因的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 2018-07-19
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多