MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come utilizzare il tipo di interfaccia come modello in mgo (Go)?

Non puoi usare un'interfaccia in un documento per il motivo che hai notato. Il decoder non ha informazioni sul tipo da creare.

Un modo per gestirlo è definire una struttura che contenga le informazioni sul tipo:

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

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

Implementare la funzione SetBSON su questo tipo. Questa funzione dovrebbe decodificare la stringa del tipo, creare un valore del tipo corretto basato su quella stringa e annullare il marshalling su quel valore.

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