问题标签 [haskell-persistent]
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 - 是否可以将 deleteCascade 与 esqueleto 一起使用?
我在 esqueleto 中没有发现任何提到 deleteCascade 和 deleteCascadeWhere 的内容……是否有与这些功能等效的 esqueleto?
mongodb - 持久性:如何从数据库中获取随机记录
我想使用持久性从数据库中获取一些随机选择的记录。
我的第一个想法是在模型上有一个自动递增的 id 字段,并按 id 获取记录。但我很快得出结论,这可能不是一个好主意。例如,如果某些记录被删除,就会出现空白。(在我的场景中,数据或多或少是静态的,但它仍然容易受到攻击)
目前计划是使用mongodb,但是这可能会改变,我现在只是在研究,项目还没有开始。
一些数据库具有选择随机记录的本机功能,持久性是否支持这一点?还是有另一种方法来完成同样的事情?
haskell - 在 Persistent 中使用生成的镜头从字段中删除下划线
假设我有一个持久类型,并希望从该类型中投射一些值:
问题是,如果我为所述类型生成镜头,使用mkPersist sqlSettings {mpsGenerateLenses = True}
,我需要在每个投影函数的开头添加下划线或使用镜头吸气剂:
- 首先,如何将其恢复为默认值,
userName vals
并添加下划线以使用镜头吸气剂,vals ^. _userName
? - 其次,为什么是这样而不是相反?
sql - Haskell 对日期的持久查询 (Yesod)
我正在尝试将日期部分添加到博客文章的 URL 中,可以说
我不仅要检查蛞蝓,还要检查日期部分。这是我到目前为止得到的:
似乎有点笨拙。有没有办法将今年、月、日部分添加为查询过滤参数?(我知道我可以执行原始查询,但这不是我想要的)
[附加信息]
我的模型定义如下:
haskell - Haskell - 无法将类型“PersistEntityBackend record0”与“SqlBackend”匹配
我正在尝试在 Yesod 中通过 id 获取记录。我的代码是:
我得到的错误是:
我该如何解决?
haskell - 使用 replaceUnique 方法时如何找出哪个键冲突?
我正在使用replaceUnique
返回类型为ReaderT backend m (Maybe (Unique record))
. 我的数据库表有两个唯一字段,如果违反唯一性,我想找出哪个键冲突。我怎样才能做到这一点?
haskell - 持久性 selectList 导致“无法将类型 'BaseBackend backend0' 与 'SqlBackend' 匹配”的错误
我遇到了以下编译错误:
代码:
看看 runSqlite 的类型签名:
我假设我需要为 runSqlite 指定一个显式类型,尽管我不太确定我在 in 中设置了backend
什么ReaderT backend (NoLoggingT (ResourceT m)) a
?
haskell - 从 yesod-sqlite 模板中“导入 Database.Persist 作为 X 隐藏(获取)”如何工作
我正在使用 yesod-sqlite 模板并尝试在测试中使用该get
函数Database.Persist
。
这是我的代码:
我得到的错误是:
在TestImport.hs
文件中,我看到了这一行:
据我了解,它应该隐藏get
HSpec 模块中的功能,因此我可以X.get
用于数据库检索。我也尝试过,Database.Persist.get
结果get
相同。
所以我的疑问是:那条线在TestImport.hs
做什么?
haskell - 无法将类型“PersistEntityBackend (Entity a)”与“SqlBackend”匹配
我有以下内容:
的目的asSqlBAckendReader
是由于Persistent selectList 导致错误 "Couldn't match type 'BaseBackend backend0' with 'SqlBackend'"。
我遇到了以下错误:
haskell - 持久键的自定义 ToJSON 实例
我正在 Haskell 中构建一个 Web 应用程序。我正在使用持久库连接到 postgresql 数据库。
我正在使用标准模式定义文件系统,其中模板 Haskell 用于从模式生成类型。
我的模式文件中定义了许多数据类型,看起来像(假例子):
“Post”旁边的“json”表示ToJSON/FromJSON将由框架自动生成。
我一直在为我的许多类型使用这种自动实例生成,以便我可以通过网络对它们进行序列化。
我的问题:我想为 Keys 提供一个自定义的 ToJSON 实例。例如在上面的“UserId”将是一个“关键用户”。每次都会在“PostId”作为“Key Post”等时自动为其生成这样一个实例。
当“Post”被序列化时,它会将“owner”从键转换为索引号,例如“52”。
我想将所有数据库键序列化为不同的样式。例如,不是生成数字“52”,而是生成字符串“fiftytwo”(只是一个示例)。
如果我不使用代码生成,我可以做类似的事情
但这需要不使用自动代码生成,因为重叠的实例错误。也许有一种方法可以告诉代码生成器不要为所有数据类型生成“ToJSON(Key Post)”等实例?
我也可以简单地为每种类型编写自定义实例声明,但这将是非常多余的。
我熟悉使用 newtypes 来拥有类型类的多个实例,但是这不太适合这种情况。
谢谢!