Go实战--golang中使用firebase实时数据库(zabawaba99/firego)
来源:互联网 发布:c语言是什么 编辑:程序博客网 时间:2024/05/15 23:52
生命不止,继续 go go go !!!
long long ago,写过两篇关于firebase的博客:
Firebase介绍(只管写代码,后台交给Firebase)
Qt中简单使用Firebase
今天,就跟大家一起学习分享一下golang中如何使用firebase的实时数据库。
Firebase 实时数据库
利用我们的 NoSQL 云端数据库存储和同步数据。数据会跨所有客户端进行实时同步,无论您的应用是否处于离线状态。
Firebase 实时数据库是一种托管在云端的数据库。它会将数据存储为 JSON,并将其实时同步到每个关联的客户端。使用 Android、iOS 和 JavaScript SDK 构建跨平台应用时,所有客户端共享一个实时数据库实例并自动接收包含最新数据的更新。
注册firebase账号
创建项目
点击规则,键入:
{ "rules": { ".read": true, ".write": true }}
zabawaba99/firego
github地址:
https://github.com/zabawaba99/firego
Star: 278
获取:
go get -u gopkg.in/zabawaba99/firego.v1
写入数据
package mainimport "log"import "github.com/zabawaba99/firego"func main() { fb := firego.New("https://dabaojian-bcb26.firebaseio.com", nil) v := map[string]interface{}{ "name": "SuperWang", "location": "Beijing", "age": 28, "Likes": []string{"Movie", "Football"}, } if err := fb.Set(v); err != nil { log.Fatal(err) }}
在你的firebase控制台,就会看到我们写入的数据。
读取数据
package mainimport "log"import "fmt"import "github.com/zabawaba99/firego"func main() { fb := firego.New("https://dabaojian-bcb26.firebaseio.com", nil) //post data to firebase v := map[string]interface{}{ "name": "SuperWang", "location": "Beijing", "age": 28, "Likes": []string{"Movie", "Football"}, } if err := fb.Set(v); err != nil { log.Fatal(err) } //get data from firebase var v_read map[string]interface{} if err := fb.Value(&v_read); err != nil { // handle err } fmt.Printf("%s\n", v_read)}
输出:map[Likes:[Movie Football] age:%!s(float64=28) location:Beijing name:SuperWang]
监听某个数据变化
package mainimport "log"import "github.com/zabawaba99/firego"func main() { fb := firego.New("https://dabaojian-bcb26.firebaseio.com/Likes/0", nil) notifications := make(chan firego.Event) if err := fb.Watch(notifications); err != nil { log.Fatal(err) } for event := range notifications { log.Println("Event Received") log.Printf("Type: %s\n", event.Type) log.Printf("Path: %s\n", event.Path) log.Printf("Data: %v\n", event.Data) if event.Type == firego.EventTypeError { log.Print("Error occurred, loop ending") } }}
在修改了某个值后,得到的输出:
2017/10/13 12:00:14 Event Received
2017/10/13 12:00:15 Type: put
2017/10/13 12:00:15 Path: /
2017/10/13 12:00:15 Data: AV
2017/10/13 12:00:27 Event Received
2017/10/13 12:00:27 Type: put
2017/10/13 12:00:27 Path: /
2017/10/13 12:00:27 Data: AV3
停止监听
fb := firego.New("https://someapp.firebaseio.com/some/value", nil) notifications := make(chan firego.Event) if err := fb.Watch(notifications); err != nil { log.Fatal(err) } go func() { for range notifications { } log.Println("Channel closed") }() time.Sleep(10 * time.Millisecond) // let go routine start fb.StopWatching()
- Go实战--golang中使用firebase实时数据库(zabawaba99/firego)
- Go实战--golang中使用WebSocket实时聊天室(gorilla/websocket、nkovacs/go-socket.io)
- Go实战--golang中使用go-spew(davecgh/go-spew)
- Go实战--golang中使用MongoDB(mgo)
- Go实战--golang中使用JWT(JSON Web Token)
- Go实战--golang中使用markdown(russross/blackfriday)
- Go实战--golang中使用RethinkDB(gorethink/gorethink.v3)
- Firebase系列之---Realtime Database(实时数据库)的使用
- Firebase初探:实时数据库(1)
- Firebase初探:实时数据库(2)
- Go实战--golang中使用redis(redigo和go-redis/redis)
- Go实战--golang中使用echo和MySQL搭建api(labstack/echo、go-sql-driver/mysql)
- Go实战--golang中使用echo嵌入静态资源(labstack/echo、GeertJohan/go.rice)
- Go实战--golang中使用gRPC和Protobuf实现高性能api(golang/protobuf、google.golang.org/grpc)
- Go实战--golang中使用echo框架中JSONP(labstack/echo)
- Go实战--golang中OAuth2.0的使用(使用google账号进行登陆验证)
- Go实战--golang中使用echo框架中的HTTP/2、Server Push(labstack/echo、golang.org/x/net/http2)
- Go实战--golang中defer的使用(有事没事defer一下)
- 10月11日云栖精选夜读:2017杭州云栖大会倒计时!研发效能主题专场五大亮点抢先看
- System progream problem detected
- 再谈Linux内核中的RCU机制
- Ruby学习笔记(10)_Hash
- angularjs 自定义: (过滤器,指令,服务)
- Go实战--golang中使用firebase实时数据库(zabawaba99/firego)
- 重磅!阿里最高武学机构“达摩院”宣布成立_你期待吗?
- LeetCode解题的总结(不定期更新)
- 使用TabLayout、ViewPager和Fragment实现顶部菜单可滑动切换
- 人物志-丘吉尔 Success consists of going from failure to failure without loss of enthusiasm. —— Winston Chu
- jdk8之永久区Permanent区参数设置分析
- JQuery的validation插件
- malloc,calloc和realloc
- 周志华机器学习第二章读书笔记(二)