如何在Firestore文档中创建自动ID?

时间:2019-11-01 16:07:39

标签: javascript firebase react-native google-cloud-firestore

我正在尝试针对已发送请求的数据结构中的好友请求功能实现此目的,但是我无法: This is the structure of the sent_requests collection

本质上,我正在尝试从Cloud Firestore中的Realtime Database中实现这一点: enter image description here reqId1和reqId2上方是自动生成的ID。 在Realtime db中轻松实现这一点很容易,因为我只能使用push() method。 问题不是创建随机数,而是我无法在将存储数据的userId文档内创建带有autoID的文档。

我已经尝试过了:

sendRequest() {
    const uid = auth().currentUser.uid;
    firestore()
      .collection('Sent_Reqs')
      .doc(`${uid}`)
      .collection(`${this.autoId()}`)
      .add({
        targetId: this.userId,
        sentAt: new Date(),
      });
  }

但是上述方法没有任何用处,因为它会将数据嵌套在文档(uid)中两层。

请帮助我

谢谢

2 个答案:

答案 0 :(得分:0)

这是您的文档数据的一部分。我不是这个firebase可以帮助您。

如果您以这种方式构造数据库,只是为了轻松地获取特定用户发送的请求。我想提出如下另一种结构:

Sent_Request (collection)
|-AutoID1 (document, this ID you can generate with help of firebase)
  |- targetUser : value
  |- sentAt : value
  |- requestSentBy : userId
|-AutoID2 (document, this ID you can generate with help of firebase)
  |- targetUser : value
  |- sentAt : value
  |- requestSentBy : userId    

答案 1 :(得分:0)

Firestore上的数据结构总是成对地 collection 然后是 document 。集合名称通常是固定/硬编码名称,而文档名称通常是生成的(或基于数据的)。

您不能立即将文档嵌套在另一个文档下,它们必须始终位于命名集合中。如果没有理由要有多个子集合,则可以选择任何对您有意义的子集合名称。

例如:

Sent_Requests
  (uid)
    Requests
      (request_id)

这里Sent_RequestsRequests是集合名称,(uid)(request_id)是文档名称。 Requests集合并不是真正有用,但是需要满足Firebase的要求。