So verwenden Sie eine Schnittstelle als Modell in mgo (Go)
Beim Umgang mit Workflows, die mehrere eingebettete Knoten unterschiedlichen Typs enthalten, Die Nutzung von Go-Schnittstellen ist ein gängiger Ansatz. Es stellt jedoch eine Herausforderung dar, wenn man versucht, diese Dokumente mit mgo zu entmarshalieren.
Um dieses Problem zu beheben, können Sie eine Schnittstelle nicht direkt in ein Dokument einschließen. Dies liegt daran, dass dem Decoder die notwendigen Typinformationen fehlen, um die entsprechende Instanz zu erstellen.
Eine praktikable Lösung besteht darin, eine Wrapper-Struktur zu erstellen, um sowohl den tatsächlichen Knoten als auch seinen Typ zu speichern:
type NodeWithType struct { Node Node `bson:"-"` Type string } type Workflow struct { CreatedAt time.Time StartedAt time.Time CreatedBy string Nodes []NodeWithType }
Um die Einrichtung abzuschließen, müssen Sie die SetBSON-Funktion auf NodeWithType implementieren. Diese Funktion dekodiert die Typzeichenfolge, instanziiert den richtigen Knotentyp basierend auf dieser Zeichenfolge und entmarshmiert dann das Dokument in der neu erstellten Instanz. Durch die Implementierung von SetBSON wird sichergestellt, dass jeder eingebettete Knoten ordnungsgemäß in den richtigen konkreten Typ entmarshallt wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3