使用gorilla和mgo访问特定文档(在本例中为事件)时遇到问题。
活动模型:
Id bson.ObjectId `bson:"_id,omitempty"`
Email string `bson:"user_email"`
Name string `bson:"name"`
Category string `bson:"category"`
Description string `bson:"description"`
Status string `bson:"status"`
事件处理程序
func ViewEventHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
eventId := vars["eventId"]
session, err := mgo.Dial("mongodb://DATABASE_URL")
defer session.Close()
session.SetMode(mgo.Monotonic, true)
c := session.DB("DATABASE_NAME").C("event")
result := model.EventModel{}
// the following line is probably the problem
err = c.FindId(bson.ObjectIdHex(eventId)).One(&result)
if r.Method == "GET" {
t, _ := template.ParseFiles("templates/view/event.html");
t.Execute(w, result);
}
}
主要的
router.HandleFunc("/event/view/{ eventId }/", handlers.ViewEventHandler)
视图(html)
<td><a href="/event/view/{{ .Id.Hex }}/">{{ .Name }}</a></td>
错误
2016/01/30 22:06:01 http: panic serving 127.0.0.1:41254: Invalid input to ObjectIdHex: ""
我想要的是转到路线/事件/视图/身份证并显示事件的特定页面。
我的猜测是,可能存在数据类型解析问题,但仍尝试了几种方法并失败。
答案 0 :(得分:1)
尝试从路由器中删除空格&#34; eventId&#34; !=&#34; eventId&#34;
router.HandleFunc("/event/view/{eventId}/", handlers.ViewEventHandler)