如何从Firebase获取多个记录?

时间:2019-03-28 20:41:05

标签: firebase go firebase-realtime-database

我有一个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为nil)。

有人可以看到我在做什么吗?

2 个答案:

答案 0 :(得分:1)

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

您有这种情况:

ref.Child("candy");

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


如果您要检索candy下的Event的列表,则应在节点Event的直接子代内进行迭代,然后才能访问节点{{ 1}}。

示例:

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中,此查询将为您提供一个结果,其中candy的值以3开头。OrderBy("candy").StartAt(3)

检查文档

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

答案 1 :(得分:0)

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

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
}