我正在使用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列。但是我不知道如何指定响应行。
任何帮助或代码示例都很棒!。
致谢。
答案 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]
还将b
从query
设置为Text
,因此它试图表现得好像该行只有一列。