如何从firebase获取多条记录?

问题描述 投票:0回答:2

我有一个firebase数据库,其数据如下:enter image description here

我想根据某些标准提取多条记录。我已经想出如何使用以下方法基于ID拉出单个记录:

ref := fbDB.NewRef("/Event/123")
event := data.EventData{}
if err := ref.Get(c, &event); err != nil {
   // error handling stuff
}

这会将event加载到我期望的数据中。当我尝试修改此代码以使用以下代码选择多个记录时:

type EventResults struct {
    Events []data.EventData
}
...
ref := fbDB.NewRef("/Event")
res := EventResults{}
if err := ref.Child("candy").OrderByValue().StartAt(350).Get(c, &res); err != nil {
   //error handling stuff
}

res.Events总是一个空数组(而err是零)。

谁能看到我做错了什么?

firebase go firebase-realtime-database
2个回答
1
投票

它是空的,因为在检索数据时,您需要遍历数据库并通过每个节点。

在你的情况下你有这个:

ref.Child("candy");

这里ref引用节点Event,在Event下你有不同的ID(123789),因此你需要在尝试访问节点candy之前访问这些节点。


如果你想检索candy下的Event列表,那么你应该在节点Event的直接子节点内迭代,然后你就可以访问节点candy了。

例:

f := firego.New("https://my-firebase-app.firebaseIO.com", nil)
var res map[string]interface{}

ref := fbDB.Ref("/Event")
if err := ref.OrderBy("candy").StartAt(3).Value(&res); err != nil {

}

您需要使用OrderBy查询才能根据candy的值检索结果。例如,在我的代码OrderBy("candy").StartAt(3)中,此查询将为您提供糖果值以3开头的结果.candy :300

检查文档:

https://godoc.org/gopkg.in/zabawaba99/firego.v1


0
投票

这基本上是Peter在上面发布的内容,但我最终使用的确切代码如下:

ref := fbDB.NewRef("/Event")
var res map[string]data.EventData

if err := ref.OrderByChild("candy").StartAt(350).Get(c, &res); err != nil {
    //Error handling stuff
}
© www.soinside.com 2019 - 2024. All rights reserved.