如何获取特定文档的文档 ID?

时间:2021-04-30 23:53:05

标签: firebase flutter dart google-cloud-firestore

我想在将特定文档的名称放入函数时获取其文档 ID。 这是我的功能:

void _getId(town) {
var data = FirebaseFirestore.instance
    .collection('towns')
    .where('town_name', isEqualTo: town)
    .snapshots();
print(data.id);}

这是我的按钮:

ElevatedButton(
            onPressed: () => _getId(_townChosen), child: Text('Get ID')),

_townChosen 是一个字符串,对应于数据库中的字段 town_name。在完整的程序中,我从下拉按钮中获取值,这部分效果很好。

这是database

所有文档都有一个 town_name 字段。 我需要所选城镇的 id 并将其发送到其他小部件中以使用其子集合。请问你能帮我获取id吗?

1 个答案:

答案 0 :(得分:0)

首先,创建一个名为townid 的变量,并将您的函数更改为 async,并使用有状态的小部件更新它,并使用 get 代替快照:

String townId = 'Get ID';

void _getId(town) async {
var data = await FirebaseFirestore.instance
    .collection('towns')
    .where('town_name', isEqualTo: town)
    .get();
 setState(() {
      townId = data.docs[0].id; //because the query returns a list of docs, even if the result is 1 document. You need to access it using index[0].
    });
print(townId);
}

在您的按钮中:

ElevatedButton(onPressed: () => _getId(_townChosen), child: Text(townId)),