go - 使用 mgo.Marshal() 编码指针

标签 go mgo

我想对指针进行编码,而不是对值进行编码。目前,如果我们有一个结构:

type Order struct {
    Item           Tool
    AssociatedItem *Tool
}

在编码时,两者都被内联到 mongo 中的订单文档中。 在 *Tool 的情况下,我需要能够执行自己的序列化。例如,在这种情况下,我可以只存储 Too 的 Id 而不是整个内容。不幸的是,mgo 中的重写机制是为工具定义一个 SetBSON() GetBSON,但它不区分指针和非指针。

处理此问题的最佳方法是什么?

最佳答案

对“指针”使用不同的类型,例如:

type SelectiveTool Tool

func (st *SelectiveTool) SetBSON(raw bson.Raw) error {
    return raw.Unmarshal(s)
}

type Order struct {
    Item           Tool
    AssociatedItem *SelectiveTool
}

关于go - 使用 mgo.Marshal() 编码指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27956149/

相关文章:

google-app-engine - 谷歌应用引擎搜索 Go : How to paginate?

unix - syscall.Stat_t.Dev 映射到什么?

docker - go docker sdk 从哪里获取?

go - 如何解决golang中 "missing Location in call to Date"的错误

使用集群 mongo 实例时 mongodb i/o 超时

haskell - 如何从 Golang 调用 Haskell 函数?

ruby - 我如何处理从 mongo 返回的任意哈希值(使用 mgo)?

go - 如何在 "pretty"文本中查看mgo的bson.Raw

go - 从集合中选择嵌套字段

MongoDB Atlas Golang mgo包 "No reachable servers"错误