使用 golang firestore 1.8 函式庫,我嘗試使用 google 去年秋天推出的 firestore 的新 count() 函式。這些文件似乎還沒有範例,不是我發現的,但我拼湊了一些有點可行的程式碼,這些程式碼幾乎讓我完成了所有工作,只是沒有實際產生一個整數。該片段底部的“result[usercountalias]”值是我感興趣的轉換為整數的值,但我不太確定如何轉換。當然,我可以將它作為一個字串,在冒號上拆分,然後解析它,但這看起來很難看。
任何提示將不勝感激!
非常感謝。
func (s UserService) Count(labID string) (int64, error) { if s.DB == nil { return -1, customerrors.ErrDatabaseMissing } query := s.DB. Collection(CollectionUsers). Where("lab_id", "==", labID) userCountAlias := "userCount" ag := query.NewAggregationQuery() //result is a firestore.AggregationResult, which seems to consist of just a //map[string]interface{} result, err := ag.WithCount(userCountAlias).Get(s.Ctx) if err != nil { return -1, err } v := result[userCountAlias]//How do I cast this to an integer? fmt.Printf("Type = %v", v) //Prints "Type = integer_value:379" return -1, nil }
嘗試fmt.printf("type = %t", v)
找出v
#的類型。
v
最有可能是 firestorepb.value。請注意,這在 1.8 中尚不可用。試著將 cloud.google.com/go/firestore
升級到最新版本(目前為 1.9)。
package main import ( "fmt" "cloud.google.com/go/firestore/apiv1/firestorepb" ) func main() { var v interface{} = &firestorepb.Value{ ValueType: &firestorepb.Value_IntegerValue{ IntegerValue: 379, }, } fmt.Printf("%T\n", v) // *firestorepb.Value fmt.Printf("%v\n", v) // integer_value:379 if v, ok := v.(*firestorepb.Value); ok { fmt.Printf("%v\n", v.GetIntegerValue()) // 379 } }
官方儲存庫中的測試以相同的方式檢索值。請參閱 testintegration_countaggregationquery。
以上是將 firestore'integer_value”轉換為整數的詳細內容。更多資訊請關注PHP中文網其他相關文章!