Golang Драйвер ArangoDB Запрос документов с переменными связывания не работает - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь отладить проблему с помощью Golang драйвера ArangoDB (Go версия go1.13.6 darwin / amd64 , версия ArangoDB 3.6 и golang драйвер github.com / arangodb / go -driver v0.0.0-20200107125107-2a2392e62f69 ). Приведенный ниже код возвращает 0 результатов; даже если один и тот же запрос имеет 2 результата, т.е. bindVars пуст (проверяется выполнением того же запроса через портал) Что здесь не так?

func (s *Service) searchProduct(offset int, count int) (interface{},int64, error){
    //FOR doc IN explore SORT BM25(doc) DESC LIMIT 0,10 RETURN doc
    queryBuilder := query.NewForQuery(exploreViewName, "doc")
    qs := queryBuilder.SortBM25(true).
        LIMIT(offset, count).
        Return().String()
    s.logFactory.Fields().Done().Info(qs)

    pCtx := context.Background()
    ctx := arangodbdriver.WithQueryCount(pCtx)

    // Open database
    db, err := s.dbClient.Database(ctx, databaseName)
    if err != nil {
        return nil, 0, errors.New(err, fmt.Sprintf("failed to open %s database", databaseName))
    }

    bindVars := map[string]interface{}{}

    cursor, err := db.Query(ctx, qs, bindVars)
    if err != nil {
        return nil, 0, errors.New(err, fmt.Sprintf("failed to query [%s] on %s database", qs, databaseName))
    }

    defer cursor.Close()
    return bindVars, cursor.Count(),nil
}

Кроме того, есть ли возможность использовать struct для привязки результата вместо bindVars := map[string]interface{}{}

Ссылка: https://www.arangodb.com/docs/stable/drivers/go-example-requests.html#querying -documents- with-bind-variable

Примечание 1. Документы в ArangoDB содержат вложенные поля.

...