2016-08-03 4 views
1

mit Diese ist mein StrukturtypGolang revel + mgo - keine Daten zurückgegeben, wenn struct Variablen klein geschriebenen Namen

type Category struct { 
    Name string  `bson:"listName"` 
    Slug string  `bson:"slug"` 
} 

mit der folgenden Funktion verwendet, um alle Ergebnisse aus einer Mongo Sammlung zurückkehren -

func GetCategories(s *mgo.Session) []Category { 
    var results []Category 
    Collection(s).Find(bson.M{}).All(&results) 
    return results 
} 

Das Problem ist, dass die Feldnamen in meiner Datenbank Namen haben, die in Kleinbuchstaben beginnen, aber die Golang-Struktur gibt null zurück, wenn ich versuche, Variablennamen zu verwenden, die mit Kleinbuchstaben beginnen. Für z.B. Dies gibt einen JSON mit entsprechenden Feldern leer -

type Category struct { 
    listName string `bson:"listName"` 
    slug string  `bson:"slug"` 
} 

Ich Portierung tatsächlich einen Meteor basierten API zu Golang und eine Menge von Produkten unter Verwendung der API auf diesen Feldnamen verlassen, wie sie in der DB sind zur Zeit! Gibt es eine Problemumgehung?

+0

Außerdem ignorieren Sie bitte keine Fehler. Collection (s) .Find (bson.M {}) .Alle (& results) sollten prüfen, ob der zurückgegebene Wert (type error) gleich null ist. https://blog.golang.org/error-handling-and-go –

+0

Ja! Vielen Dank! –

Antwort

1

Sie müssen Ihre Felder für mgos bson Unmarshall sichtbar machen, indem Sie sie mit einem Anfangsbuchstaben versehen. Sie müssen auch den entsprechenden JSON/Bson-Feldnamen zuordnen.

type Category struct { 
    ListName string  `json:"listName" bson:"listName"` 
    Slug string   `json:"slug"  bson:"slug"` 
} 
+0

Diese - Typ Kategorie struct { \t Listname String 'BSON: "Listenname"' \t Slug String 'BSON: "Slug"' } gibt diese - { "Listname": "Trimmer/Epilierer", "Slug": "Trimmer" }, Während dieser - Typ Kategorie struct { \t Listname String 'json: "Listenname"' \t Slug String 'json: "Slug"' } gibt diese - {"listName": "", "slug": "trimmer" }, Das ist eigentlich näher an dem, was ich möchte. Ich möchte, dass die Feldnamen genau so in der JSON stehen wie sie sind. –

+0

hinzufügen '' 'bson:" listName "json:" listName "' '' –

+0

Bitte in der Antwort angeben und ich kann es als richtig markieren! Du bist unglaublich! –

Verwandte Themen