Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 返回新文档id并使用一个按钮再次使用它_Firebase_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

Firebase 返回新文档id并使用一个按钮再次使用它

Firebase 返回新文档id并使用一个按钮再次使用它,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我正在我的应用程序中制作一个聊天页面。文档中有一个字段,用于记录成员、用户id和时间戳。同样在同一文档中,还有一个子集合记录消息 有一个floatingAction按钮,它打开一个表单来写标题和文本。我的问题从这里开始 这些代码用于表单中的onPress。 onPressed: () async { if (_sohbetFormu.currentState.validate()) { var docId;

我正在我的应用程序中制作一个聊天页面。文档中有一个字段,用于记录成员、用户id和时间戳。同样在同一文档中,还有一个子集合记录消息

有一个floatingAction按钮,它打开一个表单来写标题和文本。我的问题从这里开始

这些代码用于表单中的onPress。

onPressed: () async {
                    if (_sohbetFormu.currentState.validate()) {
                      var docId;
                      var refOne = FirebaseFirestore.instance
                          .collection("conversations");
                      await refOne.add({
                        "displayMessage": _textControllerTitle.text,
                        "members": _currentUid,
                      }).then((value) => docId = FieldPath.documentId);
                      _textControllerTitle.text = "";
                      var refTwo = FirebaseFirestore.instance
                          .collection("conversations/$docId/messages");
                      await refTwo.add({
                        "senderId": _currentUid,
                        "message": _textControllerText.text,
                        "timeStamp": DateTime.now(),
                      });
                      _textControllerText.text = "";
                      Navigator.pop(context);
                    }
                  },
第一个问题:我不能对子集合和信息字段使用相同的文档Id。我尝试使用FieldPath.documentId,但没有成功。FieldPath.documentId未返回任何id

第二个问题您可以在代码中看到“成员”。它应该是数组和记录成员。但现在它是弦。如何将其更改为数组?

我解决了问题

第一次:我将FieldPath.documentId更改为

.then((value) => docId = value.id);
在第二个:我将“消息”:\u textControllerText.text改为

"members": FieldValue.arrayUnion(["$_currentUid"]),

我删除这篇文章并不是因为它可能对其他人有用

很高兴听到你找到了解决方案。对于未来的问题:Firebase实时数据库和Cloud Firestore是两个独立的数据库。请用相关标签标记你的问题,不要同时用这两个标签。我修正了帖子的标签。谢谢你的警告。我已经这么做了,你把标签改错了。我再次修复了它,但是您可能想看看这两个数据库之间的区别(两者都可以从服务器接收实时更新,所以不是这样)。