【发布时间】:2021-11-04 16:30:15
【问题描述】:
void onSendMessage(String content) {
if (content.trim() != '') {
textEditingController.clear();
var documentReference = FirebaseFirestore.instance
.collection('messages')
.doc(widget.comid)
.collection(widget.comid)
.doc(DateTime.now().millisecondsSinceEpoch.toString());
FirebaseFirestore.instance.runTransaction((transaction) async {
transaction.set(
documentReference,
{
'idFrom': widget.userid,
'idTo': widget.peerid,
'timestamp': DateTime.now().millisecondsSinceEpoch.toString(),
'content': content,
},
);
});
}
else {
Fluttertoast.showToast(
msg: 'Nothing to send',
backgroundColor: Colors.black,
textColor: Colors.grey[100]
);
}
}
我想获取那些文档 ID,但它没有进入查询。但是,当我通过 Firestore 手动添加“Anakans”时,它会显示出来。
我是新来的 Flutter 和 Firestore,我犯了错误
已解决
我将文档字段设置为最近消息的最大价值。因此,该文件不再是一个不存在的祖先。我可以获取 id 列表。现在我的onSendMessage 函数看起来像
void onSendMessage(String content) {
if (content.trim() != '') {
textEditingController.clear();
var msg = {
'idFrom': widget.userid,
'idTo': widget.peerid,
'timestamp': DateTime.now().millisecondsSinceEpoch.toString(),
'content': content,
};
FirebaseFirestore.instance
.collection('messages')
.doc(widget.comid)
.set(msg);
var documentReference = FirebaseFirestore.instance
.collection('messages')
.doc(widget.comid)
.collection(widget.comid)
.doc(DateTime.now().millisecondsSinceEpoch.toString());
FirebaseFirestore.instance.runTransaction((transaction) async {
transaction.set(
documentReference,
{
'idFrom': widget.userid,
'idTo': widget.peerid,
'timestamp': DateTime.now().millisecondsSinceEpoch.toString(),
'content': content,
},
);
});
} else {
Fluttertoast.showToast(
msg: 'Nothing to send',
backgroundColor: Colors.black,
textColor: Colors.grey[100]);
}
}
【问题讨论】:
-
onSendMessage是否用于添加您希望在查询中获得的消息?然后贴出你的实际代码(不是代码截图) -
请提供更多信息将很乐意提供帮助)以及为什么交易不只是设置?
-
@PeterO。
onSendMessage在创建此文档的用户之间添加消息引用 ``` var documentReference = FirebaseFirestore.instance .collection('messages') .doc(widget.comid) .collection(widget.comid) .doc(DateTime.now( ).millisecondsSinceEpoch.toString()); ``` 然后我使用事务添加它 -
我很好奇这里的 .doc(widget.comid).collection(widget.comid) 是什么?
-
检查我的答案,你可以使用它。
标签: firebase flutter dart google-cloud-firestore stream-builder