如何获取Firestore文档的ID?

时间:2019-10-01 14:57:05

标签: go google-cloud-firestore

我正在遍历Firestore中的用户文档,但看不到我当前正在阅读的文档的ID。

  package main

  import (
    "context"
    firebase "firebase.google.com/go"
    "fmt"
    "google.golang.org/api/iterator"
    "google.golang.org/api/option"
    "log"
  )

   ctx := context.Background()
   sa := option.WithCredentialsFile("cert.json")
   app, err := firebase.NewApp(ctx, nil, sa)
   client, err := app.Firestore(ctx)

   iter := client.Collection("users").Documents(ctx)
   for {
     doc, err := iter.Next()
     if err == iterator.Done {
       break
     }
     if err != nil {
       fmt.Println("Error:", err)
     }

    userDoc := doc.Data()
    var customer_id string
    fmt.Println("user object ID: ", userDoc["mobile_number"])
    // ^ Works

    fmt.Println("user object ID: ", doc.documentID)
    // ^ This gives me this error "❯ doc.documentID undefined 
    // (type *"cloud.google.com/go/firestore".DocumentSnapshot
    // has no field or method documentID)"

据我所能read from the docs,DocumentSnapshot应该具有一个documentID属性 返回快照文档的ID。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

Go文档位于godoc.org上。

在您的行doc, err := iter.Next()中,您得到一个*DocumentSnapshot。它具有一个名为*DocumentRef的字段Ref。根据文档,其字段ID为:

// The ID of the document: the last component of the resource path.
ID  string

因此,要访问代码中的ID,您可能需要使用

doc.Ref.ID