问题标签 [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.

0 投票
0 回答
72 浏览

haskell - 是否可以将 deleteCascade 与 esqueleto 一起使用?

我在 esqueleto 中没有发现任何提到 deleteCascade 和 deleteCascadeWhere 的内容……是否有与这些功能等效的 esqueleto?

0 投票
0 回答
105 浏览

mongodb - 持久性:如何从数据库中获取随机记录

我想使用持久性从数据库中获取一些随机选择的记录。

我的第一个想法是在模型上有一个自动递增的 id 字段,并按 id 获取记录。但我很快得出结论,这可能不是一个好主意。例如,如果某些记录被删除,就会出现空白。(在我的场景中,数据或多或少是静态的,但它仍然容易受到攻击)

目前计划是使用mongodb,但是这可能会改变,我现在只是在研究,项目还没有开始。

一些数据库具有选择随机记录的本机功能,持久性是否支持这一点?还是有另一种方法来完成同样的事情?

0 投票
1 回答
261 浏览

haskell - 在 Persistent 中使用生成的镜头从字段中删除下划线

假设我有一个持久类型,并希望从该类型中投射一些值:

问题是,如果我为所述类型生成镜头,使用mkPersist sqlSettings {mpsGenerateLenses = True},我需要在每个投影函数的开头添加下划线或使用镜头吸气剂:

  • 首先,如何将其恢复为默认值,userName vals并添加下划线以使用镜头吸气剂,vals ^. _userName
  • 其次,为什么是这样而不是相反?
0 投票
1 回答
298 浏览

sql - Haskell 对日期的持久查询 (Yesod)

我正在尝试将日期部分添加到博客文章的 URL 中,可以说

我不仅要检查蛞蝓,还要检查日期部分。这是我到目前为止得到的:

似乎有点笨拙。有没有办法将今年、月、日部分添加为查询过滤参数?(我知道我可以执行原始查询,但这不是我想要的)

[附加信息]

我的模型定义如下:

0 投票
1 回答
377 浏览

haskell - Haskell - 无法将类型“PersistEntityBackend record0”与“SqlBackend”匹配

我正在尝试在 Yesod 中通过 id 获取记录。我的代码是:

我得到的错误是:

我该如何解决?

0 投票
1 回答
66 浏览

haskell - 使用 replaceUnique 方法时如何找出哪个键冲突?

我正在使用replaceUnique返回类型为ReaderT backend m (Maybe (Unique record)). 我的数据库表有两个唯一字段,如果违反唯一性,我想找出哪个键冲突。我怎样才能做到这一点?

0 投票
1 回答
905 浏览

haskell - 持久性 selectList 导致“无法将类型 'BaseBackend backend0' 与 'SqlBackend' 匹配”的错误

我遇到了以下编译错误:

代码:

看看 runSqlite 的类型签名:

我假设我需要为 runSqlite 指定一个显式类型,尽管我不太确定我在 in 中设置了backend什么ReaderT backend (NoLoggingT (ResourceT m)) a

0 投票
1 回答
45 浏览

haskell - 从 yesod-sqlite 模板中“导入 Database.Persist 作为 X 隐藏(获取)”如何工作

我正在使用 yesod-sqlite 模板并尝试在测试中使用该get函数Database.Persist

这是我的代码:

我得到的错误是:

TestImport.hs文件中,我看到了这一行:

据我了解,它应该隐藏getHSpec 模块中的功能,因此我可以X.get用于数据库检索。我也尝试过,Database.Persist.get结果get相同。

所以我的疑问是:那条线在TestImport.hs做什么?

0 投票
1 回答
593 浏览

haskell - 无法将类型“PersistEntityBackend (Entity a)”与“SqlBackend”匹配

我有以下内容:

的目的asSqlBAckendReader是由于Persistent selectList 导致错误 "Couldn't match type 'BaseBackend backend0' with 'SqlBackend'"

我遇到了以下错误:

0 投票
1 回答
261 浏览

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 来拥有类型类的多个实例,但是这不太适合这种情况。

谢谢!