Maison > développement back-end > Golang > Convertir Firestore 'integer_value' en entier

Convertir Firestore 'integer_value' en entier

PHPz
Libérer: 2024-02-06 09:10:12
avant
745 Les gens l'ont consulté

将 firestore“integer_value”转换为整数

Contenu de la question

En utilisant la bibliothèque golang firestore 1.8, j'ai essayé d'utiliser la nouvelle fonction count() de firestore lancée par Google l'automne dernier. La documentation ne semble pas encore avoir d'exemples, pas que j'ai trouvé, mais j'ai bricolé un code quelque peu fonctionnel qui m'a permis de tout faire, sauf de générer un entier. La valeur "result[usercountalias]" au bas de l'extrait est la valeur que je souhaite convertir en entier, mais je ne sais pas trop comment. Bien sûr, je pourrais en faire une chaîne, la diviser sur les deux points, puis l'analyser, mais cela aurait l'air moche.

Tous les conseils seraient grandement appréciés !

Merci beaucoup.

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
}
Copier après la connexion


bonne réponse


essayez le type de fmt.printf("type = %t", v) 找出 v.

v 最有可能是 firestorepb.value。请注意,这在 1.8 中尚不可用。尝试将 cloud.google.com/go/firestore Passez à la dernière version (actuellement 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
    }
}
Copier après la connexion

Les tests dans le dépôt officiel récupèrent les valeurs de la même manière. Voir testintegration_countaggregationquery.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal