Необязательный Find в .Find () запрос MongoDB - PullRequest
0 голосов
/ 07 декабря 2018

Мой список может получить параметр фильтра, но этот параметр является обязательным.

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
}

Как мне встретить обе альтернативы?

1 Ответ

0 голосов
/ 07 декабря 2018

Просто используйте оператор 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
}
...