我的列表可能会收到一个过滤器参数,但此参数是必需的。
status := r.FormValue("status")
var bet []*Bet
if err := db.C(collectionName).Find(bson.M{"status": status}).Sort("-data-criacao").All(&bet); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
如果未通知参数,则查询不会返回结果。
要返回所有结果,我曾经做过以下事情
var bet []*Bet
if err := db.C(collectionName).Find(nil).Sort("-data-criacao").All(&bet); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
我怎样才能遇到这两种选择?
答案 0 :(得分:2)
只需使用if
语句即可根据是否提供了参数来构造查询。
类似这样的东西:
status := r.FormValue("status")
var bet []*Bet
var filter bson.M
if status != "" {
filter = bson.M{"status": status}
}
err := db.C(collectionName).Find(filter).Sort("-data-criacao").All(&bet)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}