Firebase 返回新文档id并使用一个按钮再次使用它
我正在我的应用程序中制作一个聊天页面。文档中有一个字段,用于记录成员、用户id和时间戳。同样在同一文档中,还有一个子集合记录消息 有一个floatingAction按钮,它打开一个表单来写标题和文本。我的问题从这里开始 这些代码用于表单中的onPress。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;
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是两个独立的数据库。请用相关标签标记你的问题,不要同时用这两个标签。我修正了帖子的标签。谢谢你的警告。我已经这么做了,你把标签改错了。我再次修复了它,但是您可能想看看这两个数据库之间的区别(两者都可以从服务器接收实时更新,所以不是这样)。