问题标签 [opaleye]
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 - Opaleye 和 IfPP 中的 leftJoinF
我想使用 aLEFT JOIN
来获取产品及其(可选)属性。我有如下类型:
我的意图是使用:
这不会编译,因为:
我真的应该定义这个实例吗?它有什么用,我该怎么做?
或者如果我不应该使用Maybe
,我还能做什么?
haskell - 为什么数据库查询是使用箭头的好地方?
我正在读这个,它说:
好吧,关键是箭头符号禁止了一些符号允许的计算。特别是所有“箭头动作”必须是“静态”已知的。
它解释了:
静态已知”意味着如果我们有几行箭头符号
> -- y <- action1 -< x
> -- z <- action2 -< y
那么表达式 action2 不能依赖于 x 或实际上绑定在箭头符号行左侧的任何东西。
据我了解,这种限制使箭头值得。
现在,我正在尝试学习 Opaleye,我注意到它使用箭头将事物组合在一起。
为什么 Opaleye 使用箭头?为什么箭头非常适合这项工作?使此限制有用的数据库/查询是什么?
haskell - opaleye 是否支持 upsert / INSERT ON CONFLICT?
我正在尝试创建一个查询,例如:
但是我看不到如何用 opaleye 做到这一点?这不支持吗?
奇怪的是,我们Insert
定义了一个iOnConflict :: Maybe OnConflict
. 然而OnConflict
被定义为:data OnConflict = DoNothing
所以它现在看起来只是一个占位符?
通过 github 上列出的问题,我看到它导致了最终的 PR:https ://github.com/tomjaguarpaw/haskell-opaleye/pull/385/files但我真的无法理解它吗?我不确定它是仅实现占位符,还是实际上实现了功能。
sql - 查询 M:N 关系中的所有 N 个元素
假设我有以下表格,这些表格对附加到文章的标签进行建模:
n
检索带有所有附加标签名的最新文章的惯用方法是什么?这似乎是一个标准问题,但我是 SQL 新手,不知道如何优雅地解决这个问题。
从应用程序的角度来看,我想编写一个函数,它返回表单的记录列表[title, content, [tags]]
,即,附加到文章的所有标签都将包含在可变长度列表中。SQL 关系没有那么灵活。到目前为止,我只能考虑一个查询来连接为每个文章/标签组合返回一个新行的表,然后我需要以编程方式将其压缩为上述形式。
或者,我可以想到一个解决方案,我发出两个查询:首先,对于文章;第二,inner join
关于链接表和标签表。那么,在应用程序中,我可以过滤每个结果集article_id
以获得给定文章的所有标签吗?后者似乎是一个相当冗长和低效的解决方案。
我错过了什么吗?是否有规范的方法来制定单个查询?还是单个查询加上较小的后处理?
除了简单的 SQL 问题之外,在 Opaleye DSL 中相应的查询会是什么样子?也就是说,如果它可以翻译呢?
haskell - Opaleye 中跨链接表的数组聚合
我正在尝试构建与以下 SQL 匹配的 Opaleye 查询:
涉及的表格(简化)是:
我的目标是查询附加了一个或多个标签的文章,并将所有附加标签作为数组检索。
到目前为止,我得到了以下基本查询:
但是,我无法使聚合工作:以下内容不进行类型检查,并且我不明白如何使用上述查询组合此聚合:
在一些博客文章和 GitHub 问题中,我发现聚合不适用于 Product-Profunctors 和 Arrows,因此不能包含在箭头查询中。然而,我对 Haskell 比较陌生,并没有真正理解这两个库背后的理论(似乎没有适合初学者的文档);因此,我无法提出如何将查询与聚合相结合的一般结构。William Yao here有一些示例,但我不了解一般概念,因此无法将这些示例应用于我的问题。
如果有人可以提供有关如何在 Opaleye 中使用常规查询组合聚合的见解,我将不胜感激,谢谢!