2016-08-02 26 views
0

Ich versuche, einen API-Endpunkt mit Revel for Go zu erstellen.Revel mit mgo.v2 - Wie alle Daten aus einer Sammlung als json zurückgegeben werden?

Meine Modelle/models.go wie folgt aussieht -

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

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

Meine Controller/book.go sieht wie folgt aus -

type Category struct { 
*revel.Controller 
revelbasic.MongoController} 

func (c Category) Categories() revel.Result { 
b := models.GetCategories(c.MongoSession) 

return c.RenderJson(b)} 

ich meine conf/Routen wie diese konfiguriert haben -

GET /categories Book.Categories 

Wenn ich den Code ausführen, bekomme ich diesen Fehler -

cannot use results (type []Category) as type *Category in return argument

Ich verstehe, dass ich etwas falsch mit der Datenbankabfrage mache. Bitte helfen!

Antwort

0

Der Fehler in Ihrem Code ist wegen der Typenkonflikt zwischen Funktion GetCategories Rückgabewert Erklärung und was Sie tatsächlich zurückgeben. Um das Problem zu beheben, ändern Sie den Rückgabetyp so, dass ein Stück Ergebnisse zurückgegeben wird:

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

Vielen Dank! Ich spielte mit dem Code herum und schrieb genau das später und sah deine Antwort jetzt! Vielen Dank! –