通过使用Golang FiRestore 1.8库,我正在try 使用Google的FiRestorego 年秋天引入的新的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
}

推荐答案

try fmt.Printf("Type = %T", v)以找出v的类型.

v最有可能是类型firestorepb.Value.请注意,这在1.8中还不可用.try 将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
    }
}

Go相关问答推荐

Go:嵌入类型不能是类型参数""

如何使用中间件更改http请求的响应代码?

确定果朗CSV行中的字节数

Go - 永远停止带有上下文的循环

将字符串格式的x509证书生成主题名称

通过多阶段构建复制到 Docker 容器中时找不到文件

尽管存在 WaitGroup,Goroutines 似乎被打断了

golang:解组动态 YAML 注释

helm :将 YAML 转换为 JSON 时出错:yaml:第 xx 行:未找到预期的密钥

Go http.FileServer 给出意外的 404 错误

如何在切片增长时自动将切片的新元素添加到函数参数

从数据库中带有 imageurl 的文件夹中获取图像,并在我的浏览器中用 golang 中的 echo 显示

速率限制特定端点

处理程序后访问 HTTP 请求上下文

Golang ACMEv2 HTTP-01 挑战不挑战服务器

Go 导入范围查找 protobuf 类型

具有多个嵌入式 struct 的 Go MarshalJSON 行为

在 Go 中,为什么 exec.Command() 失败但 os.StartProcess() 成功启动winget.exe?

防止在 Go 公用文件夹中列出目录

我应该明确地创建一个与Belongs To或Has Many对称的关系吗?