partielle update mit mgo

Ich habe Folgendes problem. Ich brauche zum konvertieren einer structure zu map[string]interface{} um ein update durchzuführen in der Datenbank (Verwendung von mgo als Treiber für mongodb).

Update

Teilweise aktualisieren Sie ein Dokument in mongoDB, die (optimale) Lösung ist die Umstellung auf eine Karte und löschen Sie die unerwünschten Felder. Für das konvertieren vom struct zur Karte entnehmen Sie bitte meine andere post


Original Post

Ich den Empfang der Daten von client-side javascript und schreiben in der mein struct-Modell. Aber ich will mich nicht ändern/aktualisieren einige Felder, und so muss ich meine konvertieren Struktur zu einem map[string]interface{} löschen Sie die unerwünschten Felder.

Umwandlung der Struktur in json und dann auf die Karte, es ist nicht ok, da die Feld-Typen sind nicht erhalten. Lassen Sie zum Beispiel die folgende Struktur ein Image model:

type Image struct {
    Name string `json:name`
    Views int `json:views,string`
    Owner string `json:owner`
}

So weit so gut, aber wenn ich Sie erhalten Informationen vom client(z.B. javascript), die Ansichten-Feld ist ein string. Wenn ich konvertieren, um eine Karte der json-input vom client, dann wird der Blick-Feld ein string bleibt und der internen Darstellung dieses Wertes ist geändert in der Datenbank. Also das nächste mal lese ich das Bild aus der Datenbank, die Ansichten Feld eingeschossen (weil es die string-Darstellung aus der Datenbank).

Somit Schreibe ich die json-input von client-Struktur (für die richtige Konvertierung der variable Ansichten). Aber die Besitzer-Wert sollte sich nicht verändern (die eine form-Datenbank). Also muss ich konvertieren wieder die Struktur einer map[string]interface{} und den Prozess, der Karte, bevor Sie das update in der Datenbank.

Mithilfe der json-Paket für das es nicht eine option, weil die string-Tags aus dem Blick-Feld konvertieren von int zu string (Umbau auf anzeigen).

Bisher habe ich versucht die folgende Funktion für die Umwandlung der Struktur auf der Karte, und ich benutze Reflexion Paket und bin ein noob mit. Verstehe nicht ganz, auch das Paket.

Ich würde dankbar sein, wenn Sie kommen würde, mit ein paar Ideen.
Danke.

Was client json -> struct -> json -> map -> database? Ganz langsam, aber einfach ist es?
das ist keine Lösung, da beim konvertieren vom struct -> json, das Ansichten-Feld wird in eine Zeichenfolge konvertiert (weil der string-tag). Nicht mit dem string-tag auf der Blick-Feld wird einen Fehler verursachen, wenn das schreiben von json-zu-Struktur.
ah sorry, kannst du das machen client json -> struct -> xml/gob -> map -> database. Da der tag nur für json-Paket.
Ich denke, xml wäre die einzige Lösung. gob erwartet dekodiert werden in der gleichen Struktur geben. Ich könnte versuchen, xml, denke aber das ist die Letzte Lösung, die ich verwenden würde, verlangsamt es eine Menge so viele Konvertierungen. Danke.
BTW, sind Sie mit mgo Paket? Warum verwenden Sie nicht nur update teilweise?

InformationsquelleAutor eAbi | 2014-05-10

Schreibe einen Kommentar