FLUTTER |如何将数据添加到firestore中的现有文档

时间:2018-05-28 04:30:28

标签: firebase dart firebase-authentication google-cloud-firestore flutter

我正在使用firestore存储我的flutter应用程序的数据,并且我创建了一个在用户登录后自动在firestore中创建文档的函数 My Firestore database

现在我希望用户填写此表单时,数据将添加到用户电子邮件所在的同一文档中。

[ RaisedButton(
              child: Text("Submit"),
              onPressed: () {
               final CollectionReference users = Firestore.instance.collection('users');
                Firestore.instance
                    .runTransaction((Transaction transaction) async {
                  CollectionReference reference =
                  Firestore.instance.collection('users');

                  await reference
                      .add({"fullname": nameController.text, "PhoneNumber": phoneController.text, "adresse": adressController.text});
                  nameController.clear();
                  phoneController.clear();
                  adressController.clear();

                });},][2]

我尝试了这段代码,但它添加了新文档。

4 个答案:

答案 0 :(得分:2)

最佳做法是使用交易。 确保文档引用是对要更新的文件的引用。

            Firestore.instance.runTransaction((transaction) async {
              await transaction.update(
                  documentReference, data);
            };

它将确保更新发生,以防万一客户端正在进行更新。

如果是并发编辑,Cloud Firestore会再次运行整个事务。例如,如果事务读取文档而另一个客户端修改任何这些文档,则Cloud Firestore将重试该事务。此功能可确保事务在最新且一致的数据上运行。

更多信息here

答案 1 :(得分:1)

在更新数据库之前指定文档名称。

Firestore.instance.collection('Products').document('Apple').updateData({ 'price': 120, 'quantity': 15 });

此处我的价格和数量数据是数字。如果你的是字符串,那么就把字符串值放在那里。

答案 2 :(得分:0)

尝试.setData({"fullname": nameController.text, "PhoneNumber": phoneController.text, "adresse": adressController.text}, merge: true)

答案 3 :(得分:0)

2021 年更新:

您需要更新数据才能将其添加到现有文档中。

var collection = FirebaseFirestore.instance.collection('users');
collection 
    .doc('doc_id') // <-- Doc ID where data should be updated.
    .update({'age' : 20}) // <-- New data
    .then((_) => print('Updated'))
    .catchError((error) => print('Update failed: $error'));