首頁 > 後端開發 > Golang > 主體

將 firestore'integer_value”轉換為整數

PHPz
發布: 2024-02-06 09:10:12
轉載
717 人瀏覽過

将 firestore“integer_value”转换为整数

問題內容

使用 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中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!