Я использую Go (1.10.3) с Gin Framework.Я подключаюсь к базе данных Couchbase (5.1.1), но у меня возникают некоторые проблемы с сортировкой данных.
Так что это код, с которым я сейчас работаю,
//Build Search Sort
func searchSort(c *gin.Context) (cbft.SearchSortField, *cbft.SearchSortScore, string) {
mapData := getQuery(c)
sortData := mapData["sort"]
var sortType string
var sortScore *cbft.SearchSortScore
var sortOps *cbft.SearchSortField
if sortData == "amount:asc" {
fmt.Println( sortData )
sortType = "asc"
sortScore = cbft.NewSearchSortScore().Descending(false)
sortOps = cbft.NewSearchSortField("AmountBase").Descending(false)
}
if sortData == "amount:desc" {
fmt.Println( sortData )
sortType = "desc"
sortScore = cbft.NewSearchSortScore().Descending(true)
sortOps = cbft.NewSearchSortField("AmountBase").Descending(true)
}
return sortOps, sortScore
}
Который я загружаю в запрос следующим образом:
sortOpsOne, sortOpsTwo := searchSort(c)
ftSearch := gocb.NewSearchQuery("Search", searchOps).Sort(sortOpsOne).Sort(sortOpsTwo).Limit(size).Skip(from)
. Чтобы объяснить, вышеизложенное загружает запрос get string, например, sort=amount:asc
, чтобы отсортировать ответ JSON по полю AmountBase, которое у меня есть.
Однако, похоже, это не работает вообще, я начал с поля sortOps
, но добавил поле sortScore
, так как поле сортировки ничего не делало.
Добавление descending(false) / descending(true)
в конец поля сортировки, похоже, тоже ничего не делает.
Поиск выполняется по индексу FTS на основе данных, которые я загрузил в свойbucket.
Я не уверен, что я делаю неправильно?
Кажется, что не работает с опциями по убыванию, кажется, что работает восходящий запрос.:)