Mgo单bson.M结果工作不正常
我正在构建一个资源RESTAPI,但有以下问题 返回所有记录的Find方法可以像这样正常工作Mgo单bson.M结果工作不正常,go,bson,mgo,Go,Bson,Mgo,我正在构建一个资源RESTAPI,但有以下问题 返回所有记录的Find方法可以像这样正常工作 type Resource struct { *Controller } func (self *Resource) Find(res http.ResponseWriter, req *http.Request) { resource := self.ParseResource(req) queryParams := req.URL.Query() query := make(bso
type Resource struct {
*Controller
}
func (self *Resource) Find(res http.ResponseWriter, req *http.Request) {
resource := self.ParseResource(req)
queryParams := req.URL.Query()
query := make(bson.M, 0)
for k, v := range queryParams {
query[k] = v[0]
}
var jsonR []bson.M
coll := self.GetDb().C(resource)
coll.Find(query).All(&jsonR)
self.RenderJson(res, jsonR)
}
单一结果不起作用,返回空结构:
func (self *Resource) FindOne(res http.ResponseWriter, req *http.Request) {
id := mux.Vars(req)["id"]
var jsonR = bson.M{}
coll := self.GetDb().C(self.ParseResource(req))
query := bson.M{"_id": id}
coll.Find(query).One(&jsonR)
self.RenderJson(res, jsonR)
}
我知道问题在var jsonR=bson.M{}中的某个地方,但在findall中它工作得很好
知道我遗漏了什么吗?完全正常工作的代码,问题是bson.objectedhex(id)而不仅仅是id
func (self *Resource) FindOne(res http.ResponseWriter, req *http.Request) {
id := mux.Vars(req)["id"]
raw := req.URL.String()
raw = strings.TrimPrefix(raw, "/")
resource := strings.TrimSuffix(raw, "/" + id)
var jsonR bson.M
coll := self.GetDb().C(resource)
err := coll.FindId(bson.ObjectIdHex(id)).One(&jsonR)
if err != nil {
panic(err)
}
self.RenderJson(res, jsonR)
}
虽然这与你的问题是正交的,但这个/自我在围棋中并不常见: