MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como usar o tipo de interface como modelo no mgo (Go)?


Você não pode usar uma interface em um documento pelo motivo indicado. O decodificador não possui informações sobre o tipo a ser criado.

Uma maneira de lidar com isso é definir uma estrutura para armazenar as informações de tipo:
type NodeWithType struct {
   Node Node `bson:"-"`
   Type string
}

type Workflow struct {
   CreatedAt time.Time
   StartedAt time.Time
   CreatedBy string
   Nodes []NodeWithType
}

Implemente a função SetBSON neste tipo. Essa função deve decodificar a string de tipo, criar um valor do tipo correto com base nessa string e desempacotar para esse valor.
func (nt *NodeWithType) SetBSON(r bson.Raw) error {
}