如何在firestore中获取setData的ID?

Posted

技术标签:

【中文标题】如何在firestore中获取setData的ID?【英文标题】:How to get the Id of of setData in firestore? 【发布时间】:2018-12-29 19:29:45 【问题描述】:

我正在编写一个颤振应用程序,其中我在 firebase 中设置了一个文档实例,如下所示:

await _firestoreInstance.collection("groups").document().setData(

  'group_name': groupName,
  'class_name': className,
  'location': groupLocation,
  'time': groupTime,
  'date': groupDate,
  'number_in_group': 1
,);

然后我想把上面的文档id做这样的事情:

  _firestoreInstance.collection("colleges").document(collegeStudent.collegeId).collection('activeGroups').document().setData('group_id':*above document id goes here*); //above document id is the id of the document created by the first query

所以我的问题是有没有一种方法可以获取第一个文档的 id 并将其用作第二个查询的参考?

【问题讨论】:

【参考方案1】:

为了简化document().setData(data),我在我的解决方案中使用了add(data),它的作用完全相同,并从document()返回DocumentReference

// insert your data ( 'group_name'...) instead of `data` here
final DocumentReference documentReference = 
  await _firestoreInstance.collection("groups").add(data);

final String groupID = documentReference.documentID;

// groupID contains the documentID you were asking for
// here I am just inserting it into your example code from the question
_firestoreInstance.collection("colleges").document(collegeStudent.collegeId)
  .collection('activeGroups')
  .add('group_id': groupID); // using add instead of `document().setData` here as well

如您所见,我正在使用返回的 DocumentReference(如上所述)并使用 documentID getter 从您新创建的文档中提取 ID。

【讨论】:

【参考方案2】:

使用以下代码执行setData,并从groups获取ID。

var groups = _firestoreInstance.collection("groups");

await groups.document().setData(

    'group_name': groupName,
    'class_name': className,
    'location': groupLocation,
    'time': groupTime,
    'date': groupDate,
    'number_in_group': 1
);

groups.documentID

【讨论】:

以上是关于如何在firestore中获取setData的ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何从对象中获取 FireStore 文档 ID?

Firestore - 如何在将文档添加到集合后获取文档 ID

如何在 swift iOS Firestore 中获取单元格文档 ID?

如何在快速点击 Firestore 中的 uitablecellviewcell 时获取文档 ID

在 Dart 的 Cloud Firestore 中添加文档后如何获取文档 ID

如何在 Firestore 中获取生成的文档 ID,然后将子集合添加到其中?