问题标签 [esqueleto]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 用 esqueleto 计算行数
我正在尝试使用 Esqueleto(版本 2.1.2.1)计算内部连接的行数。不幸的是,我的代码无法编译,我不明白为什么。我查看了以下有关如何执行此操作的示例,但无法弄清楚我做错了什么:example1,example2。
我的架构看起来像这样(简化):
用户可以在网站上注册玩游戏。无需注册也可以玩。因此,有一个单独的表Player
。游戏有状态。它可以是Ongoing
,或某种形式的游戏结束。我现在想计算用户正在玩的所有正在进行的游戏。
下面的 SQL 查询可以做到这一点(对于 1 的固定 userId):
但是,以下 Esqueleto 查询无法编译:
错误消息如下所示:
但是,如果我删除countRows
. 即以下代码编译并执行我想要它执行的操作。
我究竟做错了什么?
haskell - 简化 Persistent & Esqueleto 代码
我有一个相当简单的查询,它执行两个外连接。(一顿饭有许多食谱,而食谱又包含许多食物)。
这个查询很棒,它说明了它需要什么,没有更多内容。但是,由于 SQL 的工作方式,它为我返回了一个包含大量重复膳食的表,对于每个匹配的外部连接。
例如,一顿饭有两个食谱,每个食谱有两种食物,变成 4 个元组。
我想将这些回滚为单一Meal
数据类型。(此处简化以显示结构,其他字段当然存储在数据库中)。
我似乎必须完全手动进行此合并,而对于这个单个查询,它最终变成了 2 页左右的代码。
忽略不应该像这样使用类型类的事实,它看起来像一个(愚蠢的)类型类的很多实例DeserializeDb
:
剪辑了许多复杂性的实例(代码: https ://gist.github.com/cschneid/2989057ec4bb9875e2ae )
问题:
我唯一要公开的是查询签名。其余的都是实施垃圾。有没有我没有注意到的使用 Persistent 的技巧?我是否必须手动将连接合并回haskell类型?
haskell - 如何使用 Persistent 启用自动记录 SQL 语句
我已经搜索了这个问题的明确答案,但还没有找到 - 如何启用持久执行的 SQL 语句的自动日志记录?有人可以给我一个小示例程序吗?
以下是当前没有日志记录的示例程序。如何启用登录?
postgresql - 在 Esqueleto/Persistent 中指定 Postgres 表模式
我将 Esqueleto 与 Postgres 一起使用,但看不到指定表所在架构的方法。目前我正在发出以下 sql 来设置架构:
这允许我使用我想要的表,只要它们位于模式 foo 或模式栏中。有没有办法为每个表设置架构?
haskell - 在 esqueleto 中将 Int 和 double 值相乘?
我面临的问题非常简单:基本上我正在尝试计算 Int 和 Double 的乘积。在普通的 Haskell 中,我会跑
但是我无法弄清楚如何在 esqueleto 中做到这一点。我有一个表 B 有一个 Int 类型的列“数量”和一个表 C 有一个 Double 类型的列“价格”。当尝试提取两者并计算产品时,像这样
我收到类型错误(如预期的那样):
我在文档中找不到任何对我有帮助的东西,而且我实际上不知道如何继续。(有关更多代码,请参见下面的完整示例)。
可能的解决方案:我当然可以将价格存储为 Int,但如果可以使用 esqueleto 来完成,我很感兴趣。
完整示例:
数据库:
表 A:ID|名称
表 B:Id|AId|BId|Amount 其中 Amount 是 Int,AId 和 BId 是对表 A 和 B 的引用。
表 C: Id|Name|Price ,这里是 Price a Double
我写的查询如下:
编辑:
我尝试过使用fmap
并fromIntegral
喜欢这样:
这会导致两个错误:
No instance for (Functor SqlExpr)
和
No instance for (Num (Value Double))
正如评论中所建议的(@Thomas M. DuBuisson),我尝试了:
这解决了第二个问题,但我仍然得到No instance for (Functor SqlExpr)
.
编辑 2:
我在 Yesod 邮件列表上问过这个问题。可以在这里找到讨论。
haskell - Yesod Esqueleto 在加入时不知道 ModelId
在 esqueleto 上编译我的代码时遇到问题。出于某种原因,我的 fpcomplete IDE 说现在有一个错误。但是,当我构建它时,它说 My ModelId 是未知的。
这是我的代码:
错误信息是这样的:
也许这也会有所帮助:我使用 FpComplete 作为 Esqueleto 2.0.1 的 IDE(我认为这是 IDE 支持的版本。)
谢谢。
database - Haskell persistent w/ esqueleto:读取整个表并计算记录
我有以下架构:
现在说我想admin_chan
以[AdminChan]
. 我怎样才能做到这一点?我有这个功能:
1)但是我如何[AdminChan]
从SqlPersistT IO
堆栈中取出?(请注意,我没有使用yesod
.)
2)另外,是否可以重写上述函数,使其成为多态并且也可以与BanHost
表一起使用?
3) 我如何编写一个函数,使用esqueleto
,将返回表中的记录数?
谢谢!
sql - 如何在 Esqueleto 查询中使用除非(或何时)?
我构建了一个查询,该查询连接了几个表并进一步限制了结果,除非一个名为IncludeAll
equals的字段True
。
我正在尝试这样写
但我收到以下错误
无法将预期类型与第一个参数中的
Bool
实际类型匹配Database.Esqueleto.Internal.Language.Value Bool
unless
所以unValue
不知何故不能解决问题。事实上,类似的东西b ^. BIncludeAll
有 type expr (Value a)
。
查看源代码中的定义对SqlExpr
我也没有帮助:
这是一个ADT:
PS:我使用 SQL 后端,但理想情况下这不重要,对吧?
haskell - 关于 == 的 Database.Esqueleto 之谜。真值
在调试一个意外返回空列表的查询时,我意识到我写了一些愚蠢的东西:
...因为您可以附加== True
到任何布尔值。用以下内容替换它意外地解决了我的问题,结果不再是空列表。
任何人都可以告诉我两者之间的实际区别吗?为什么会有?
编辑:数据库后端是 sqlite。
database - 如何在 esqueleto 查询中进行比较之前应用函数
对于这样简单的查询
我想在将字段值与“x”进行比较之前应用一个函数。原因是单元格代码在数据库中有尾随空格,没有什么比将它们修剪掉更容易的了,例如使用strip from Data.Text
。但是,我最初使用fmap
(两次)的方法导致
我知道 Esqueleto 提供了一些功能,例如just
,专门完成类似的事情(虽然我找不到 的实现just
)。
有没有办法对打包值应用任何函数?
写作时:在我的具体情况下,我可能只想使用like
.
编辑:添加了我要应用的特定功能。