问题标签 [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 中的行数和类似内容
好的,我会更具体
此代码导致错误
那是因为编译器不知道它必须使用哪个表来计算行数。这件事可以通过类似的解决方法来完成
然而,这是可怕的、乏味的和人为的。是否有另一种更简单的方法来修复此代码?
答案是:
我们应该说明表格,其中将计算行数。最简单的方法是使用 ScopedTypeVariables 语言扩展,并在本地描述参数的类型:
[Value c2] <- select $
from $ \(_ :: SqlExpr (Entity Topic)) ->
do
return countRows
haskell - 在 Esqueleto 中加入子查询的结果
我要翻译的查询的基本部分是这样的:
我正在尝试的 Esqueleto(无法编译)是这样的:
haskell - 在同一功能中混合 Esqueleto 和 Persistent
我可能会做一些非常愚蠢的事情,但我想在同一个函数中将一些 Esqueleto 与常规持久查询混合。
我有功能:
并且 loadPlanetConstructionQueue 具有签名(这个执行连接,因此我想在这里使用 Esqueleto):
这不起作用,我收到以下错误:
我认为这与“BackendCompatible SqlBackend backend”和“BaseBackend backend ~ SqlBackend”之间的区别有关。
有没有办法让这个工作?在这种情况下,我可以使用 Esqueleto 编写 selectList 部分,但更进一步,将需要使用替换,Esqueleto 不支持(我认为)。
我对 Haskell、Persistent 或 Esqueleto 了解不多,所以我在这里有点迷茫。
haskell - Haskell Esqueleto 3 表连接
这些是我从三个表中进行 SELECT 的尝试。但他们不编译,我不理解错误(我不知道为什么它需要一个元组(Entity Issue, b0)
而不是我认为代码试图获取的三元组)。
尝试1:
错误1:
尝试2:
错误2:
这是我的持久模型:
如您所见,两次尝试中的错误是相同的:它需要一个元组而不是一个三元组。
任何帮助将不胜感激 :)
database - Esqueleto 只返回一列
我对 Haskell 很陌生,目前正在尽我所能防止我的大脑内翻。我有一个以这种方式定义的非常简单的数据库模式:
我注意到我可以通过以下方式查询表中的所有条目:
但是,如果我只想得到一个列怎么办?我试过这样的事情:
但我收到一条错误消息:
我在这里找到了关于如何返回列子集的类似问题: Haskell Esqueleto project subset of columns to list of custom records
我的问题是:我是否也需要实现我在我的应用程序中发布的文章中描述的所有类型(即仅针对单个列/字段)?
编辑
感谢提示,我设法想出了以下代码:
1.)这是可接受的解决方案吗?2.)对于我的教育:有没有办法避免“<-”符号?具体来说,我想知道是否有办法以下列方式编写它:
database - Haskell 持久化 - 通过外键获取价值
假设我有一个非常简单的带有外键的数据库(为简单起见:一个带有自引用的表;上下文 - 对金融工具进行建模):
然后我可以通过执行获取所有行:
我注意到我可以使用自动生成的函数从结果中提取特定字段,例如
但是,当我尝试引用通过外键引用的值时,我得到:
我的问题:如何引用与收到的“关键工具”相对应的剩余值,例如如何获取引用记录的“名称”字段?
编辑:
我试过写一个子查询,但到目前为止还不好。我尝试的是:
如何在我的子查询中正确使用“Key Instrument”参数?
haskell - Persistent 中不区分大小写的唯一性约束?
这可能是一个愚蠢的问题,我以某种方式忽略了具有低于标准 Google-fu 技能的现有内容,但是有没有办法使用 Persistent 创建一个新的文本字段,对该字段有唯一性约束,唯一性就是案例-麻木不仁?例如,假设我想创建一个唯一且没有重复的用户名字段,以便四个不同的用户无法创建撒旦、SATAN、撒旦和 SaTaN 用户名记录?
还是我必须依靠 Postgres 特定的功能并使用原始 SQL 来实现这一点?或者它是否可能在不使用原始 SQL 的情况下在 esqueleto 中完成?
更新 1:src/ModelTypes.hs
我尝试在新搭建的Yesod站点中
添加 @MaxGabriel 的修订版并将其导入src/Model.hs
. 为此,我似乎必须添加import Database.Persist.Sql
以消除一个编译器错误,现在我在运行时遇到此错误 3 次yesod devel
:
尚未更新脚手架用户模型(由虚拟身份验证使用)config/models.persistentmodels
以使用新Username
类型...
...但是在以前尝试简单地更改ident
为 usecitext
时,它可以将新记录插入到数据库中,但是在尝试对用户进行身份验证时似乎不愿检索和转换该记录的类型。
更新2:import Data.Text (Text)
添加后的
输出ModelTypes.hs
更新 3:
添加{-# LANGUAGE FlexibleInstances #-}
到后ModelType.hs
,上述错误消失。在尝试像这样Username
在脚手架User
模型中使用新类型时
发生了一个新错误:
database - Esqueleto "where_" 子句中的自定义函数
我想编写一个函数来检查用户的登录名和哈希密码是否存在于数据库中。假设 DB 非常简单:
https://hackage.haskell.org/package/password-2.0.1.1/docs/Data-Password-PBKDF2.htmlHash
的别名type Hash = PasswordHash PBKDF2
在哪里。
另外,为简单起见,我们假设登录名和密码都以String
.
模块中有一个名为checkPassword
( https://hackage.haskell.org/package/password-2.0.1.1/docs/Data-Password-PBKDF2.html#g:3 ) 的函数,用于检查密码是否产生所需的哈希值。但是,我不知道如何在 esqualetowhere_
子句中使用它。
我想出了这样的事情:
但是这部分hashFunc (user ^. UserPassHash)
显然是行不通的。我想我需要进入hashFunc
一个单子(或两个),但我不知道该怎么做。
我注意到那UserPassHash
是 type EntityField User Hash
。我想知道我怎样才能把它变成EntityField User PasswordCheck
.
haskell - Haskell Esqueleto:使用“with”对值列表执行连接
我正在尝试对事先已知的值列表进行连接。在以下示例中 - 获取列表中每个 sku 的价格。
我找到了一个建议使用“with”功能的链接: https ://funprog.srid.ca/haskell/values-in-esqueleto-persistent.html
但是我在这里超出了我的深度,不知道该怎么办。在值列表上执行连接的最简单方法是什么?(使用 CTE 支持和“with” - 或以其他方式)
这是我的尝试(不编译):
haskell - 如何将呈现的持久性/esqueleto 查询传递给另一个查询?
我想使用 Persistent/Esqueleto 来实现计数估计。
本文推荐的一种方法是定义这样的函数
然后像这样使用它
为了使用该count_estimate
功能,我需要(我认为?)呈现 Peristent/Equeleto 生成的查询,但是当我尝试使用 呈现查询时renderQuerySelect
,我得到类似这样的结果
这当然不能塞进count_estimate
,因为它会在?
占位符上出现语法错误。我也不能天真地替换?
with "Active"
,因为它会在第一个双引号上出现语法错误。
如何以我的count_estimate
函数可以接受的方式呈现查询?
我试过这样的东西,但它在运行时失败