从 Firestore 中提取 Map 对象,获取随机垃圾

我正在使用 Go 尝试从 Firestore 中提取一些文档,但遇到了很大的障碍:无论我多么努力,我都无法从查询本身中提取数据。当我打印doc.Data()或无论它是什么时,它都可以正常工作:


map[Ext: ID:107677035991703552 Kind:link Start:0.0 Stop:8.0 URL:ONHPHmNV0m4]

我愿意:


iter := client.Collection("intro-requests").Documents(ctx)

for {

    doc, err := iter.Next()

    if err == iterator.Done {

        break

    }

    var temp Request

    doc.DataTo(&temp)

    fmt.Println(temp)

    requests = append(requests, temp)

    for _, request := range requests {

        fmt.Println(doc.Data())

        createVote(s, request)

    }

    fmt.Println(doc.Data())

}

根据谷歌示例,但打印temp哪个,我得到这个:


{ link 0 0  }

但有时也这样:


{  0 0  }

有时是这样的:


{ link 0 0 ONHPHmNV0m4 }

是什么赋予了?我什至无法理解这里发生了什么。我也找不到任何其他有效的例子,因为谷歌的所有例子都只是打印地图,它在 100% 的时间内都有效。几乎感觉地图正在变成一个字节数组或其他东西,而程序只是试图从中挽救一些数字。


这是我的课:


type Request struct {

    ID    string  `json:"ID"`

    Kind  string  `json:"Kind"`

    Start float64 `json:"Start"`

    Stop  float64 `json:"Stop"`

    URL   string  `json:"URL"`

    Ext   string  `json:"Ext"`

}

我试过使用第三方反序列化包,但没有任何改变......有什么线索吗?


慕田峪9158850
浏览 111回答 1
1回答

波斯汪

事实证明 Go 不能反序列化Float64, 只有Nil, Bool,Int64和String. 奇怪的是,类型错误之类的东西会导致这种行为。我把我float64的s换成了strings,然后就用了strconv.ParseFloat()。问题解决了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go