猿问

Golang jsonapi 需要 string 或 int 但 mongo

使用 go 和以下包:


github.com/julienschmidt/httprouter  

github.com/shwoodard/jsonapi  

gopkg.in/mgo.v2/bson

我有以下结构:


type Blog struct{

    Posts []interface{}

}


type BlogPost struct {

    Id bson.ObjectId `jsonapi:"primary,posts" bson:"_id,omitempty"`

    Author string `jsonapi:"attr,author"`

    CreatedDate time.Time `jsonapi:"attr,created_date"`

    Body string `jsonapi:"attr,body"`

    Title string `jsonapi:"attr,title"`

}

和这个路由器处理程序:


func (blog *Blog) GetAll(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {

    if err := jsonapi.MarshalManyPayload(w, blog.Posts); err != nil {

        http.Error(w, err.Error(), 500)

    }

}

当处理函数被调用时,它会抛出错误:


id should be either string or int

这个结构应该看起来如何,以便我可以将它与 mgo 和 jsonapi 一起使用?


芜湖不芜
浏览 301回答 1
1回答

人到中年有点甜

创建一个博客结构,如下所示type BlogPostVO struct {Id string `jsonapi:"primary,posts" bson:"_id,omitempty"`Author string `jsonapi:"attr,author"`CreatedDate time.Time `jsonapi:"attr,created_date"`Body string `jsonapi:"attr,body"`Title string `jsonapi:"attr,title"`}并在控制器中使用以下函数来解析func parseToVO(blog *models.Blog) *models.BlogVO {  bolgVO := models.BlogVO{}   bolgVO.Id = blog.Id.Hex()   bolgVO.Author  = blog.Author   bolgVO.CreatedDate = blog.CreatedDate  bolgVO.Body = blog.Body  bolgVO.Title = blog.Title  return &models.Blog}这对我有用
随时随地看视频慕课网APP

相关分类

Go
我要回答