Mongo

1 Example

项目地址Mongo - 图1 (opens new window)

ego版本:ego@v0.5.3

2 mongo配置

  1. type Config struct {
  2. DSN string // DSN DSN地址
  3. Debug bool // Debug 是否开启debug模式
  4. SocketTimeout time.Duration // SocketTimeout 创建连接的超时时间
  5. PoolLimit int // PoolLimit 连接池大小(最大连接数)
  6. EnableMetricInterceptor bool // EnableMetricInterceptor 是否启用prometheus metric拦截器
  7. EnableAccessInterceptorReq bool // EnableAccessInterceptorReq 是否启用access req拦截器,此配置只有在EnableAccessInterceptor=true时才会生效
  8. EnableAccessInterceptorRes bool // EnableAccessInterceptorRes 是否启用access res拦截器,此配置只有在EnableAccessInterceptor=true时才会生效
  9. EnableAccessInterceptor bool // EnableAccessInterceptor 是否启用access拦截器
  10. SlowLogThreshold time.Duration // SlowLogThreshold 慢日志门限值,超过该门限值的请求,将被记录到慢日志中
  11. }

3 优雅的Debug

通过开启debug配置和命令行的export EGO_DEBUG=true,我们就可以在测试环境里看到请求里的配置名、地址、耗时、请求数据、响应数据 img.png

4 用户配置

  1. [mongo]
  2. debug=true
  3. dsn="mongodb://user:password@localhost:27017,localhost:27018"

5 用户代码

  1. var stopCh = make(chan bool)
  2. // 假设你配置的toml如下所示
  3. conf := `
  4. [mongo]
  5. debug=true
  6. dsn="mongodb://user:password@localhost:27017,localhost:27018"
  7. `
  8. // 加载配置文件
  9. err := econf.LoadFromReader(strings.NewReader(conf), toml.Unmarshal)
  10. if err != nil {
  11. panic("LoadFromReader fail," + err.Error())
  12. }
  13. // 初始化emongo组件
  14. cmp := emongo.Load("mongo").Build()
  15. coll := cmp.Client.Database("test").Collection("cells")
  16. findOne(coll)
  17. stopCh <- true