firebase 如何将数据插入到已经创建的数据库中Firestore with Flutter

nzkunb0c  于 2023-03-31  发布在  Flutter
关注(0)|答案(1)|浏览(121)
GestureDetector(
                        onTap: () async {
                          final games = await openDialog();
                          if (games == null || games.isEmpty) return;

                          setState(() => this.games = games);
                        },

                     
                     ---------
                     ---------

Future<String?> openDialog() => showDialog<String>(
        context: context,
        builder: (context) => AlertDialog(
          title: Center(
            child: Text(
              'Games',
              style: loginText,
            ),
          ),
          content: TextFormField(
            controller: controller,
          ),
          actions: [
            TextButton(
                onPressed: () {
                  Map<String, String> save = {'description': controller.text};
                  FirebaseFirestore.instance.collection('profiles').add(save);
                  Navigator.pop(context);
                },
                child: Text('Save'))
          ],
        ),
      );

当点击保存按钮时,我希望能够将输入的文本分配给用户在注册时创建的文档中的“描述”值。

新用户注册时保存在数据库中的数据。

当我单击保存按钮时,它会保存到具有新文档ID的数据库,而不是保存到相关用户的数据库。

gj3fmq9x

gj3fmq9x1#

add()函数专门在集合中创建一个新文档,并生成一个新ID。
您似乎要将数据合并到现有记录中。在这种情况下,请使用

db.collection('yourcollection').doc('docId').set(save, SetOptions(merge : true));

可能是ID不正确。您可以尝试更新现有记录,如果不存在则会失败:

Future<void> update() {
  return FirebaseFirestore.instance.collection('profiles')
    .doc('Your-DOC-ID')
    .update(save)
    .then((value) => print("Updated"))
    .catchError((error) => print("Failed to update: $error"));
}

相关问题