假设您有一个由多个不同类型的嵌入式节点组成的工作流程。由于节点是不同类型的,我想在这里使用Golang接口,并与下面上来:如何在mgo(Go)中使用界面类型作为模型?
type Workflow struct {
CreatedAt time.Time
StartedAt time.Time
CreatedBy string
Nodes []Node
}
type Node interface {
Exec() (int, error)
}
type EmailNode struct {
From string
To string
Subject string
Body string
}
type TwitterNode struct {
Tweet string
Image []byte
}
func (n *EmailNode) Exec() (int, error){
//send email
return 0, nil
}
func (n *TwitterNode) Exec() (int, error) {
//send tweet
return 0, nil
}
这些工作流程都存储在MongoDB中,我有它的样本种子数据。使用氧化镁,当我试图找到一个工作流程(鉴于其ID):
w = &Workflow{}
collection.FindID(bson.ObjectIdHex(id)).One(w)
我得到的错误 - 类型bson.M的价值是不能分配给类型的节点。
这对我来说也感觉有点奇怪,如何将mgo解组嵌入到没有任何类型信息的Go结构中。可能是我需要从另一个角度来看问题。
任何建议将不胜感激。
太棒了!这样可行。整齐。 – shardnit 2014-09-25 19:10:14
你可以举一个setBSON函数如何实现的例子吗?我不知道如何解码字符串。 – e3matheus 2017-09-19 16:45:15