首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RethinkDB:将ReQL转换为整数类型

RethinkDB:将ReQL转换为整数类型
EN

Stack Overflow用户
提问于 2015-07-02 06:29:32
回答 1查看 186关注 0票数 1

无法计算如何将reql转换为类型。

我插入一个文档并获得结果,这是一个带有“错误”键的对象。我只需要看看它是0还是0?

所以像这样一个简单的函数:

代码语言:javascript
复制
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类型?

谢谢

编辑

很抱歉没有提供一些数据类型。

代码语言:javascript
复制
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 act

EDIT2

谢谢AtnNn给出的答案,第一个例子奏效了。但我仍然无法计算出ReQL的转换。这是我的错,我不能拿出一个好的例子。我再试一次。我得到一些json,用Aeson构造响应json,并将它发送回删除id属性

代码语言:javascript
复制
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类型?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-02 19:13:19

您可以按照https://hackage.haskell.org/package/rethinkdb-1.16.0.0/docs/Database-RethinkDB.html#t:WriteResponse中的示例使用docs for 的结果实例

代码语言:javascript
复制
res <- runDB $ table "articles" # insert doc
if writeResponseErrors res == 0

R.!运算符用于构造ReQL类型的查询,而不是检查结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31177018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档