我想根据特定条件提取多条记录。我已经想出如何使用以下方法基于 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)。
谁能看出我做错了什么?
最佳答案
它是空的,因为在检索数据时需要遍历数据库并通过每个节点。
在你的情况下你有这个:
ref.Child("candy");
此处 ref
引用节点 Event
并且在 Event
下您有不同的 ID(123
,789
),因此您需要在尝试访问节点 candy
之前访问这些节点。
如果你想检索 Event
下的 candy
列表,那么你应该在节点 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)
中,此查询将为您提供一个结果,其中 candy 的值以 3 开头。candy :300
查看文档:
关于firebase - 如何从 firebase 获取多条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55406519/