MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment utiliser le type d'interface comme modèle dans mgo (Go) ?

Vous ne pouvez pas utiliser une interface dans un document pour la raison que vous avez indiquée. Le décodeur n'a aucune information sur le type à créer.

Une façon de gérer cela consiste à définir une structure pour contenir les informations de type :

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

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

Implémentez la fonction SetBSON sur ce type. Cette fonction doit décoder la chaîne de type, créer une valeur du type correct en fonction de cette chaîne et démarshaler à cette valeur.

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