首页 > 解决方案 > 更新 Firebase 中的数据

问题描述

我有一个跨越多个页面的注册页面,该页面收集用户数据,例如地址、出生日期、姓名等。

在每个页面上,我都有一些运行代码,这些代码会更新 firebase 中文档中的各个字段。例如。

SECTION 1:
               onPressed: () async {
                      if(_formKey.currentState.validate()) {
                        await DatabaseService(uid: user.uid).updateUserData(
                          _currentPinCode ?? userData.pinCode,
                        );
                      }
                      Navigator.pushNamed(context, Routes.signup4);
                  }

我有一个名为 database.dart 的文件来处理数据库查询。在这里,我有一个名为 updateUserData 的函数,其中包含我希望在我的 firebase 文档中更新的字段。见下文:

SECTION 2:
  final String uid;
  DatabaseService ({ this.uid });

  final CollectionReference userCollection = Firestore.instance.collection('users');
  
  Future updateUserData(String firstName, String middleName, String lastName,
                        String dateOfBirth, String phone, int pinCode, String addressLn1,
                        String addressLn2, String city, String postCode, String country,
  ) async {
    return await userCollection.document(uid).setData({
      'firstName': firstName,
      'middleName' : middleName,
      'lastName' : lastName,
      'dateOfBirth' : dateOfBirth,
      'phone' : phone,
      'pinCode' : pinCode,
      'addressLn1' : addressLn1,
      'addressLn2' : addressLn2,
      'city' : city,
      'postCode' : postCode,
      'country' : country,
    });
  }

当 SECTION 1 中的代码运行时,它当然会丢失 SECTION 2 中的所有参数,因此会失败。

我想知道当数据位于应用程序内的多个页面上时,更新 firebase 文档的最佳方式是什么。收集地图中的所有数据是否更好,地图的上下文跨越多个页面,或者在每个页面完成时更新数据库更好,如果是这样,最好的方法是什么。

我知道这是一个奇怪的问题,但有点卡住了,任何帮助都会很棒。

谢谢

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


推荐阅读