2016-08-03 3 views
1

を持ったときに何もデータが返されない。これは、私の構造体型Golangのレヴェル+ MgOを -</p> <pre><code>func GetCategories(s *mgo.Session) []Category { var results []Category Collection(s).Find(bson.M{}).All(&results) return results } </code></pre> <p>- 構造体変数は小文字の名前

Mongoのコレクションからすべての結果を返すために、次の機能を使用
type Category struct { 
    Name string  `bson:"listName"` 
    Slug string  `bson:"slug"` 
} 

です問題は、私のdbのフィールド名が小文字で始まる名前を持っているが、小文字で始まる変数名を使用しようとするとGolang構造体がnullを返すということです。例えば、これは、空の対応するフィールドでJSONを返す -

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

私は実際にGolangに流星ベースのAPIを移植することだし、彼らはデシベルにいるような現在のAPIを使用した製品の多くは、これらのフィールド名に依存しています! 回避策はありますか?

+0

また、エラーを無視しないでください。 Collection(sson).Find(bson.M {})。すべて(&results)は、返された値(型エラー)がnilであることを確認する必要があります。 https://blog.golang.org/error-handling-and-go –

+0

はい!ありがとうございました! –

答えて

1

フィールドにmgos bson Unmarshallを表示するには、開始大文字で名前を付ける必要があります。また、適切なjson/bsonフィールド名にマップする必要があります

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

これ - タイプカテゴリのstruct { \tリスト名文字列 'BSON: "リスト名" ' \tスラグ列' BSON: "スラグ" ' } 戻り、この - { "のListName": "トリマー/脱毛器"、 "スラッグ": "トリマー" }、 一方、この - 型カテゴリ構造体{ \tリスト名文字列 'JSON: "リスト名" ' \tスラグ列' JSON: "スラグ" ' } 戻り、この - {"listName": ""、 "slug": "trimmer" }、 これは実際に私が望むものに近いものです。彼らと同じように、フィールド名がjsonにも存在してほしいです。 –

+0

'' bson: "listName" json: "listName" '' 'を追加してください –

+0

これを答えに含めてください。あなたは素晴らしいです! –

関連する問題