Maison  >  Article  >  développement back-end  >  Convertir Firestore "integer_value" en entier

Convertir Firestore "integer_value" en entier

PHPz
PHPzavant
2024-02-06 09:10:12718parcourir

将 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
}

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
    }
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Changement de contexte GolangArticle suivant:Changement de contexte Golang