MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie verwende ich den Schnittstellentyp als Modell in mgo (Go)?

Aus dem von Ihnen angegebenen Grund können Sie keine Schnittstelle in einem Dokument verwenden. Der Decoder hat keine Informationen über den zu erstellenden Typ.

Eine Möglichkeit, damit umzugehen, besteht darin, eine Struktur zu definieren, die die Typinformationen enthält:

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

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

Implementieren Sie die SetBSON-Funktion für diesen Typ. Diese Funktion sollte den Typ String decodieren, basierend auf diesem String einen Wert des korrekten Typs erstellen und diesen Wert entpacken.

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