sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo usar el tipo de interfaz como modelo en mgo (Go)?

No puede usar una interfaz en un documento por el motivo que anotó. El decodificador no tiene información sobre el tipo a crear.

Una forma de manejar esto es definir una estructura para contener la información de tipo:

type NodeWithType struct {
   Node Node `bson:"-"`
   Type string
}

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

Implemente la función SetBSON en este tipo. Esta función debería decodificar la cadena de tipo, crear un valor del tipo correcto basado en esa cadena y descomponerse a ese valor.

func (nt *NodeWithType) SetBSON(r bson.Raw) error {
}