首页 > 解决方案 > 如何获取 Firestore 文档的 ID?

问题描述

我在 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)"

据我可以从文档中读取, DocumentSnapshot 应该具有documentID返回快照文档 ID 的属性。

我究竟做错了什么?

标签: gogoogle-cloud-firestore

解决方案


Go 文档位于godoc.org上。

在您的行中doc, err := iter.Next(),您得到一个*DocumentSnapshot. 它有一个名为Refwhich is a的字段*DocumentRefID根据文档,它的字段是:

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

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

doc.Ref.ID

推荐阅读