doumu2172 2014-08-21 15:44 采纳率: 0%
浏览 5
已采纳

将方法转换为通用方式,使用mgo查找

I'm trying to get getObj() function will be more general and could work with any type, not only User like in my code. I was thinking in return a interface instead a defined struct, but I can't fit this idea to my code, please could someone give me a hand with this?
Thanks in advance

type User struct {
    FirstName  string        `bson:"first_name"`
    LastName   string        `bson:"last_name"`
}

type Mbase struct {
    coll *mgo.Collection
    sess *mgo.Session
}

func (b *Mbase) getObj(attr string, val string) (res *User, err error) {
    err = b.coll.Find(bson.M{attr: val}).One(&res)
    if err != nil {
        return
    }
    err = nil
    return
}
  • 写回答

1条回答 默认 最新

  • donglijuan8227 2014-08-21 16:45
    关注

    You can do something like:

    func (b *Mbase) GetObj(attr string, val string, result interface{}) error {
        return b.coll.Find(bson.M{attr: val}).One(result)
    }
    

    Doesn't feel like the helper is doing much good, though. Find+One itself is already generic. I'd also consider using bson.D{{attr, val}} instead of bson.M if that's all you need.

    Also, please consider asking questions in a single forum at a time.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?