gpt4 book ai didi

firebase - 如何获得 flutter 朔迷离中的Firestore文档的证件编号?

转载 作者:行者123 更新时间:2023-12-03 02:41:52 25 4
gpt4 key购买 nike

我尝试了以下操作,但它返回了Firestore中不存在的随机字符串。
我确实使用查询快照获取了父集合的documentid

DocumentReference doc_ref=Firestore.instance.collection("board").document(doc_id).collection("Dates").document();

var doc_id2=doc_ref.documentID;
更多代码:尝试访问文档ID时出现错误。我试图使用等待,但给了一个错误。
 Widget build(BuildContext context) {
return Scaffold(
appBar: new AppBar(
title: new Text(
"National Security Agency",
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.normal,
fontSize: 24.0),
),
backgroundColor: Colors.redAccent,
centerTitle: true,
actions: <Widget>[
new DropdownButton<String>(
items: <String>['Sign Out'].map((String value) {
return new DropdownMenuItem<String>(
value: value,
child: new Text(value),
);
}).toList(),
onChanged: (_) => logout(),
)
],
),
floatingActionButton: FloatingActionButton(
onPressed: () {

},
child: Icon(Icons.search),
),

body: StreamBuilder (
stream: cloudfirestoredb,


builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) return new Text('Loading...');

return new ListView(
children: snapshot.data.documents.map((document) {


var doc_id=document.documentID;
var now= new DateTime.now();
var formatter=new DateFormat('MM/dd/yyyy');
String formatdate = formatter.format(now);
var date_to_be_added=[formatdate];

DocumentReference doc_ref=Firestore.instance.collection("board").document(doc_id).collection("Dates").document();

var doc_id5= await get_data(doc_ref);


print(doc_id);



Firestore.instance.collection("board").document(doc_id).collection("Dates").document(doc_id5).updateData({"Date":FieldValue.arrayUnion(date_to_be_added)});
return cardtemplate(document['Name'], document['Nationality'], doc_id);

}).toList(),
);
},
),
);
}

最佳答案

您必须检索该文档的作为其ID。
试试这个


DocumentReference doc_ref=Firestore.instance.collection("board").document(doc_id).collection("Dates").document();

DocumentSnapshot docSnap = await doc_ref.get();
var doc_id2 = docSnap.reference.documentID;

由于代码使用await,因此请确保在标记为 async 的函数中使用此功能。
编辑:
在评论中回答您的问题
Future<String> get_data(DocumentReference doc_ref) async { 
DocumentSnapshot docSnap = await doc_ref.get();
var doc_id2 = docSnap.reference.documentID;
return doc_id2;
}

//To retrieve the string
String documentID = await get_data();
编辑2:
只需将异步添加到 map 功能即可。
snapshot.data.documents.map((document) async {


var doc_id=document.documentID;
var now= new DateTime.now();
var formatter=new DateFormat('MM/dd/yyyy');
String formatdate = formatter.format(now);
var date_to_be_added=[formatdate];

DocumentReference doc_ref=Firestore.instance.collection("board").document(doc_id).collection("Dates").document();

var doc_id5= await get_data(doc_ref);


print(doc_id);



Firestore.instance.collection("board").document(doc_id).collection("Dates").document(doc_id5).updateData({"Date":FieldValue.arrayUnion(date_to_be_added)});
return cardtemplate(document['Name'], document['Nationality'], doc_id);

}).toList(),
让我知道这个是否奏效

关于firebase - 如何获得 flutter 朔迷离中的Firestore文档的证件编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62968486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com