登录
首页 >  Golang >  Go问答

获取firebase中的多条记录的方法

来源:stackoverflow

时间:2024-03-04 19:30:27 257浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《获取firebase中的多条记录的方法》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

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

我想根据某些条件提取多条记录。我已经弄清楚如何使用以下方法根据 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 为零)。

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


解决方案


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

在你的情况下,你有这个:

ref.child("candy");

此处 ref 引用节点 event,并且在 event 下您有不同的 id(123789),因此您需要在尝试访问节点 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

检查文档:

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

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

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>