Rumah > pembangunan bahagian belakang > Golang > Tukar firestore 'integer_value' kepada integer

Tukar firestore 'integer_value' kepada integer

PHPz
Lepaskan: 2024-02-06 09:10:12
ke hadapan
745 orang telah melayarinya

将 firestore“integer_value”转换为整数

Kandungan soalan

Menggunakan perpustakaan golang firestore 1.8, saya cuba menggunakan fungsi count() baharu firestore yang dilancarkan oleh Google pada musim luruh lalu. Dokumen itu nampaknya masih belum mempunyai contoh, bukan yang saya temui, tetapi saya menyusun beberapa kod yang agak berfungsi yang membuatkan saya melakukan segala-galanya kecuali sebenarnya menjana integer. Nilai "result[usercountalias]" di bahagian bawah coretan ialah nilai yang saya berminat untuk menukar kepada integer, tetapi saya tidak pasti caranya. Sudah tentu, saya boleh menjadikannya rentetan, membelah pada kolon, dan kemudian menghuraikannya, tetapi itu akan kelihatan hodoh.

Sebarang petua akan sangat dihargai!

Terima kasih banyak-banyak.

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
}
Salin selepas log masuk


jawapan betul


cuba jenis fmt.printf("type = %t", v) 找出 v.

v 最有可能是 firestorepb.value。请注意,这在 1.8 中尚不可用。尝试将 cloud.google.com/go/firestore Naik taraf kepada versi terkini (kini 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
    }
}
Salin selepas log masuk

Ujian dalam repositori rasmi mendapatkan semula nilai dengan cara yang sama. Lihat testintegration_countaggregationquery.

Atas ialah kandungan terperinci Tukar firestore 'integer_value' kepada integer. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan