Запрос / ответ Кассандра - PullRequest
       1

Запрос / ответ Кассандра

0 голосов
/ 26 августа 2018

Я работаю с соединителем Cassandra с использованием библиотек cql и cql-io, после документации API я чувствую себя глупым, я не могу понять, как сделать запрос для получения ответа.

ПокаЯ могу подключиться к бэкэнду Cassandra, но когда я пытаюсь сделать запрос, используя этот код

selectAllUser :: IO [Identity Text]
selectAllUser = do
                  logger <- Logger.new Logger.defSettings
                  conn <- Client.init logger createConnectionSettings
                  let selectAllQuery = "SELECT * from haskell_cassandra.haskell_users" :: QueryString R () (Identity Text)
                  let queryParam = defQueryParams One ()
                  runClient conn (query selectAllQuery queryParam)

Я получаю эту ошибку

 internal error: "response body reading: Failed reading: column count: 2 =/= 1\nEmpty call stack\n"

Я понимаю с ошибкой, что ответ имеет 2 столбца, и это правильно, моя таблица имеет 2 столбца.Но я не знаю, как указать строку ответа.

Любая помощь или пример кода это было бы здорово!.

С уважением.

1 Ответ

0 голосов
/ 29 августа 2018

Я не использовал библиотеку и не пробовал ее, но:

Учитывая, что query имеет следующую подпись:

query :: (MonadClient m, Tuple a, Tuple b, RunQ q) => q R a b -> QueryParams a -> m [b]

Ваша подпись должна быть (при условии, что оба столбцаstrings)

selectAllUser :: IO [Identity (Text,Text)]

Объяснение: в настоящее время вы присваиваете ему тип

selectAllUser :: IO [Identity Text]

, который также устанавливает b из query в Text, и поэтому он пытается вести себя какесли в строке был только один столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...