flutter 从刚创建的Firestore文档中获取ID [重复]

rqqzpn5f  于 2022-12-14  发布在  Flutter
关注(0)|答案(2)|浏览(140)

此问题在此处已有答案

How do you get the document id after adding document in Cloud Firestore in Dart(5个答案)
昨天关门了。
我正在检查Cloud Firestore中是否已存在聊天集合:

CollectionReference chats = FirebaseFirestore.instance.collection('chats');

 void checkUser() async {
    await chats
        .where('users', isEqualTo: {widget.emailOtro: null, usuario!.email: null})
        .limit(1)
        .get()
        .then(
          (QuerySnapshot querySnapshot) async {
        if (querySnapshot.docs.isNotEmpty) {
          setState(() {
            chatDocId = querySnapshot.docs.single.id;
            existeChatroom = true;
          });

          print(chatDocId);
        } else {
          existeChatroom = false;
          await chats.add({
            'users': {usuario!.email: null, widget.emailOtro: null},
            'names':{usuario!.email:miAlias,widget.emailOtro:widget.aliasOtro }
          }).then((value) {
            print("chat id recibido ${value}");
            chatDocId = value;
           
            });
        }
      },
    )
        .catchError((error) {});
  }

检查收款聊天中是否有选中用户的单据后,函数应该返回单据id为chatDocId
在聊天文档存在的情况下,我得到了正确的chatDocId值。
但在聊天文档不存在的情况下,会创建一个新的聊天文档,但我无法从该文档中获取ID。
我为chatDocId获取值:

DocumentReference<Map<String, dynamic>>(chats/NSEgC8LvBOMfjP1Hw1IR

如何从刚创建的文档中获取文档ID?

xn1cxnb4

xn1cxnb41#

您可以直接从返回值中获取ID;

.then((value) {
            print("chat id recibido ${value}");
            chatDocId = value;
            
            final chatId = value.id;
            print(chatId);
           
            });
vhipe2zx

vhipe2zx2#

根据文档,文档参考具有id字段:https://pub.dev/documentation/cloud_firestore/latest/cloud_firestore/DocumentReference/id.html
如果我没弄错的话,你还可以在对象的String表示中看到:DocumentReference<Map<String, dynamic>>(chats/NSEgC8LvBOMfjP1Hw1IR,更明确地NSEgC8LvBOMfjP1Hw1IR

相关问题