请求/响应Cassandra

时间:2018-08-26 10:30:13

标签: haskell cassandra

我正在使用cql和cql-io库使用Cassandra连接器,在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 :(得分:0)

我没有使用过图书馆,也没有尝试过,但是:

假设query具有以下签名:

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

您的签名应该是(假设两列都是字符串)

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

说明:当前,您为其分配了类型

selectAllUser :: IO [Identity Text]

还将bquery设置为Text,因此它试图表现得好像该行只有一列。