背景
从mongo数据库中取出数据以interface{}格式返回,解析返回的数据。
1.从mongo中取数据
newSession := m.Session.Copy()
defer newSession.Close()
c := newSession.DB(database).C(collName)
if err := c.Find(bson.M{"time": occurtime}).One(&data); err != nil {
Error(err)
}
2.mongo返回数据后 对interface数据进行解析
问题
问题就是出现在解析的时候报了错
特地debug了一下queryresult的类型 发现的确是bson.M 然后他就是报错
尝试了各种方法,打了无数debug,并没发现问题。
解决
最后还是在同事帮助下。。去掉了这里的断言看看问题
看到了panic后的问题显示
第一眼看的一头雾水。。 bson.M not bson.M
最后想到,这是在两个文件下的代码 然而
一个引用了服务本地的mgo包 另一个则使用了gopath内的包
所以判断成了两个不一样的类型 真的是尴尬0.0
教训总结
同一个服务用到的相同包一定要调同一个地方的!!!
同一个服务用到的相同包一定要调同一个地方的!!!
同一个服务用到的相同包一定要调同一个地方的!!!