【问题标题】:How to variable values comes from firestore database?如何变量值来自firestore数据库?
【发布时间】:2021-11-04 17:30:16
【问题描述】:

我正在使用 firestore 数据库,这是我的变量

  final firebase = FirebaseFirestore.instance;
  int lessonpoint1 = 0;
  int lessonpoint2 = 0;

我创建了一个方法来在启动时创建这些变量

  create() async {
    try {
      await firebase.collection("Accounts").doc(_user.uid).set({
        "Adı Soyadı": _user.displayName,
        "Mail Adresi": _user.email,
        "lessonpoint1": lessonpoint1,
        "lessonpoint2": lessonpoint2,
      });
    } catch (e) {
      print(e);
    }
  }

在我创建它之后,我不希望这里的变量在这里的值为 0。我想从 Firestore 中提取这些值。我怎样才能做到这一点?我用 Update 给变量赋值 10,但是当我想访问变量时,全局级别的值 0 来了。

谢谢你, 祝你有美好的一天。

【问题讨论】:

    标签: flutter google-cloud-firestore flutter-layout flutter-dependencies flutter-android


    【解决方案1】:

    您可以使用TransactionFieldValue.increment(),而不是直接从客户端设置值。

    使用Transaction,您将确保始终从数据库中获取最新值并对其进行更新。

    FieldValue.increment() 非常相似,但语法要少得多,您可以只使用简单的增量。

    例如,如果您想将每次访问的积分增加10,您可以这样编写代码:

    create() async {
        try {
          await firebase.collection("Accounts").doc(_user.uid).set({
            "Adı Soyadı": _user.displayName,
            "Mail Adresi": _user.email,
            "lessonpoint1": FieldValue.increment(10),
            "lessonpoint2": FieldValue.increment(10),
          });
        } catch (e) {
          print(e);
        }
      }
    

    如果您只对如何从 Firestore 获取数据本身感兴趣,我建议您先查看文档 here

    您可以阅读更多关于这两种方法的信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多