golang mgo封装工具

1、mgotools代码

package mgotools

import (
	"fmt"
	"gopkg.in/mgo.v2"
)

type DataStore struct {
	MgoUrl  string
	Session *mgo.Session
	DB      string
}

func (ds *DataStore) MgoInit() {
	session, err := mgo.Dial(ds.MgoUrl)

	if err != nil {
		fmt.Println(err)
	}
	ds.Session = session
}

func (ds *DataStore) MgoConnect(collection string) (*mgo.Session, *mgo.Collection) {
	if ds.Session != nil {
		ms := ds.Session.Copy()
		c := ms.DB(ds.DB).C(collection)
		ms.SetMode(mgo.Monotonic, true)
		return ms, c
	} else {
		return nil, nil
	}
}

func (ds *DataStore) FindOne(collection string, query, result interface{}) error {
	ms, c := ds.MgoConnect(collection)
	if c != nil {
		defer ms.Close()
		return c.Find(query).One(result)
	} else {
		return fmt.Errorf("connect mongodb error")
	}
}

2、mgotools_test代码

package mgotools_test

import (
	"gitlab.liquidnetwork.com/box_backend/boxapigo/utils/mgotools"
	"gopkg.in/mgo.v2/bson"
	"testing"
)

type User struct {
	UserName    string `json:"username"`
	Password    string `json:"password"`
	AccountName string `json:"account_name"`
	PhoneNumber string `json:"phone_number"`
	CreateTime  string `json:"create_time"`
	EditTime    string `json:"edit_time"`
}

var bdssDs mgotools.DataStore

func init() {
	ds := mgotools.DataStore{
		DB:      "bdss",
		MgoUrl:  "mongodb://bdss:1q2w3e4r@localhost/bdss",
		Session: nil,
	}

	ds.MgoInit()
	bdssDs = ds
}

func GetDs() mgotools.DataStore {
	return bdssDs
}

func TestDataStore_FindOne(t *testing.T) {
	var user = User{}
	ds := GetDs()
	err := ds.FindOne("User", bson.M{"username": "admin"}, &user)
	if err != nil {
		panic(err)
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值