无法计算如何将reql转换为类型。
我插入一个文档并获得结果,这是一个带有“错误”键的对象。我只需要看看它是0还是0?
所以像这样一个简单的函数:
savePerson :: Handler ()
savePerson = do
let load = fromJust . extract ["data", "attributes"]
doc <- load <$> jsonBody'
res <- runDB $ table "articles" # insert doc
if (res R.! "errors") == 0
then setStatus status204
else setStatus status500这显然不编译,但它给出了我想要的示例。为了比较,我需要将reql转换为Integer。如何将类型从reql转换为haskell类型?
谢谢
编辑
很抱歉没有提供一些数据类型。
import Web.Spock (runQuery)
import Database.RethinkDB.NoClash
runDB :: (Result a, Expr q) => q -> Handler a
runDB act = runQuery $ \hdl -> run hdl act
runDB' :: Expr q => q -> Handler Datum
runDB' act = runQuery $ \hdl -> run' hdl actEDIT2
谢谢AtnNn给出的答案,第一个例子奏效了。但我仍然无法计算出ReQL的转换。这是我的错,我不能拿出一个好的例子。我再试一次。我得到一些json,用Aeson构造响应json,并将它发送回删除id属性
fetchPerson :: Text -> Handler ()
fetchPerson oid = do
res <- runDB' $ table "articles" # get (expr oid)
json $ object [
"data" .= [
"type" .= ("articles"::Text),
"id" .= oid,
"attributes" .= (res # without ["id"])
]
]现在,(res # without ["id"])还是给了我ReQL,对吧?我需要将它转换为一个类型,即ToJSON实例或Aeson Value类型。我该怎么做呢?通常如何将ReQL转换为haskell类型?
谢谢
发布于 2015-07-02 19:13:19
您可以按照https://hackage.haskell.org/package/rethinkdb-1.16.0.0/docs/Database-RethinkDB.html#t:WriteResponse中的示例使用docs for 的结果实例
res <- runDB $ table "articles" # insert doc
if writeResponseErrors res == 0R.!运算符用于构造ReQL类型的查询,而不是检查结果。
https://stackoverflow.com/questions/31177018
复制相似问题