【发布时间】:2019-04-20 21:10:59
【问题描述】:
我可以毫无问题地显示 result.InsertedID,但是,当我尝试访问该值以在其他地方使用它时,我不断收到上述错误。我想在离开插入新对象的方法之前获取该值。错误消息没有任何意义。
res.InsertedID.(primitive.ObjectID) 出现此错误。正确的方法是什么?
如何获得最好作为十六进制字符串的具体值?即使我可以将值作为具体的 ObjectID 而不是接口,我也会很高兴。
【问题讨论】:
我可以毫无问题地显示 result.InsertedID,但是,当我尝试访问该值以在其他地方使用它时,我不断收到上述错误。我想在离开插入新对象的方法之前获取该值。错误消息没有任何意义。
res.InsertedID.(primitive.ObjectID) 出现此错误。正确的方法是什么?
如何获得最好作为十六进制字符串的具体值?即使我可以将值作为具体的 ObjectID 而不是接口,我也会很高兴。
【问题讨论】:
应用程序中有两个名为 primitive 的包,其中包含一个名为 ObjectID 的类型。 type assertion 中的具体值来自这些包之一。断言的类型来自另一个包。由于类型不相等,类型断言会出现恐慌。
通过修改应用程序以对 primitive 包(和整个驱动程序)使用单个导入路径进行修复。
2019 年 2 月,包的规范导入路径从 github.com/mongodb/mongo-go-driver/bson/primitive 更改为 go.mongodb.org/mongo-driver/bson/primitive。应用程序很可能同时使用了这两个导入路径。
【讨论】: