我尝试了以下方法,但它返回一个随机字符串,该字符串在Firestore中不存在。
我确实设法使用查询快照获取了父集合的documentid
DocumentReference doc_ref=Firestore.instance.collection("board").document(doc_id).collection("Dates").document();
var doc_id2=doc_ref.documentID;
更多代码:我在尝试访问文档ID时遇到错误。我曾尝试使用wait,但它给出了错误。
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(),
);
},
),
);
}
8条答案
按热度按时间ds97pgxw1#
您必须检索该文档的ID。
试试这个
确保在标记为async的函数中使用此函数,因为代码使用了await。
只需在map函数中添加async即可。
让我知道如果这工作
qcbq4gxm2#
更新之后,您现在可以使用这行代码来访问文档ID,
其中快照是查询快照。
这里有一个例子。
pod7payv3#
您可以在文档中添加值后使用***value.id***获取documentId,方法如下:-
此处,值.id***给出了***数据库ID。
4ngedf3f4#
dly7yett5#
document()
当你不带任何路径调用这个方法时,它会为你创建一个随机id。来自文档:
如果未提供[path],则使用自动生成的ID。生成的唯一键以客户端生成的时间戳为前缀,以便生成的列表按时间顺序排序。
因此,如果要获取
documentID
,请执行以下操作:yk9xbfzb6#
您还可以执行以下操作
kx5bkwkv7#
大家好,来自2022年的cloud_firestore:^3.1.0您可以通过执行以下操作获取uid:
首先,我要求你注意我们没有为id存储一个新的字段,这将是一种重复,所以我们希望得到自动生成的uid,它代表唯一的id。
模型层。
一个非常常见的模型,唯一特殊的是id属性。
数据层。在此提取数据。
就这样,希望我说清楚了好代码!
为了确保您理解了这个概念,我们获取带下划线的id。x1c 0d1x
zf9nrax18#