如何从firebase获取多个记录?

如何从firebase获取多个记录?,firebase,go,firebase-realtime-database,Firebase,Go,Firebase Realtime Database,我有一个firebase数据库,数据如下: 我想根据某些条件提取多个记录。我已经了解了如何使用以下方法基于ID提取单个记录: ref := fbDB.NewRef("/Event/123") event := data.EventData{} if err := ref.Get(c, &event); err != nil { // error handling stuff } 这将使用我期望的数据加载事件。当我尝试修改此代码以选择具有以下代码的多个记录时: type Even

我有一个firebase数据库,数据如下:

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

ref := fbDB.NewRef("/Event/123")
event := data.EventData{}
if err := ref.Get(c, &event); err != nil {
   // error handling stuff
}
这将使用我期望的数据加载
事件
。当我尝试修改此代码以选择具有以下代码的多个记录时:

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
为零)


有人能看出我做错了什么吗

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

在您的情况下,您有:

ref.Child("candy");
此处
ref
引用的是节点
Event
,在
Event
下,您有不同的ID(
123
789
),因此您需要在尝试访问节点
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
的值检索结果。例如,在mycode
OrderBy(“candy”).StartAt(3)
中,此查询将给出一个结果,其中candy的值以3开头<代码>糖果:300

检查文档:


这基本上是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
}

所以我真正想要的是得到单个事件,其中candy的值在一定范围内。如何根据
candy
的值限制正在提取的事件记录?我知道
ref.Child(“candy”)
不正确,但我不清楚我应该做什么,而不是检查我在答案中的编辑,我也不知道golang,但我编写的代码应该根据我对
go
Hrrm的搜索工作,我没有使用firego软件包,但让我看看我是否能够解决如何将其应用于内置库:@AbeMiessler好的,如果您使用的是上面的链接,那么请执行
ref.OrderByChild(“candy”).StartAt(3)。Get(&res)