问题标签 [doobie]
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.
scala - Doobie 流式查询导致无效操作
杜比
在 Scala 或 Doobie 方面没有太多经验的情况下,我正在尝试从 DB2 数据库中选择数据。以下查询工作正常并按预期打印 5 名员工。
问题
当我想读取所有选定的行并删除take(5)
时,我有.process.list
而不是.process.take(5).list
,我得到以下错误。(一世)
我想知道take(5)
它不会返回错误的变化。为了获取有关无效操作的更多信息,我尝试启用日志记录。(ii) 不幸的是,流式传输不支持日志记录。如何获取有关导致此错误的操作的更多信息?
普通 JDBC
下面,在我看来,普通的 JDBC 查询按预期工作并返回所有 10 行。
环境
从错误消息中可以看出,我正在使用db2jcc.jar
version 3.64.133
。DB2 在版本 11 中使用。
postgresql - 如何使用 Doobie 正确处理 Hikari 连接池
我一直在使用 doobie (cats) 从 scalatra 应用程序连接到 postgresql 数据库。最近我注意到该应用程序正在为每个事务创建一个新的连接池。我最终解决了它 - 见下文,但这种方法与 doobie 书的“管理连接”部分中采用的方法完全不同,我希望有人能确认它是否明智或是否有更好的设置方法建立连接池。
这是我最初所拥有的 - 这可以工作,但会在每个连接上创建一个新的连接池:
我最初的假设是ensuring xa.shutdown
每个请求都有问题,但是删除它会导致连接很快被用完,直到没有剩余。
这是解决问题的尝试-使我能够删除ensuring xa.shutdown
,但仍然导致连接池被反复打开和关闭:
最后,我通过创建一个HikariDataSource
对象然后将其传递给HikariTransactor
构造函数来获得所需的行为:
sql - 具有泛型类型参数的 Scala doobie 片段
我正在尝试将不同类型的对象抽象到类似结构的 sql 表中。这是我正在尝试做的事情:
但我得到这个编译错误:
我可以在文档中找到的是:
doobie 允许您使用 Meta 实例插入任何类型的值(及其选项),其中包括...
但在这种情况下似乎还不够;我需要什么正确的类型/导入/转换?
scala - 在没有显式匹配的情况下转换 Doobie ConnectionIO[Option[Int]]
我有一个ConnectionIO[Option[Int]]
和映射Option
来产生ConnectionIO[Option[String]]
一个查询,Some[Int]
否则保持Nones. I was able to do this with a
匹配comprehension and a
`:
我知道我被ConnectionIO
容器绊倒了,但我找不到更干净的映射方法来转换ConnectionIO[Option[Int]]
为ConnectionIO[Option[String]]
.
mysql - 带有 Hikari 设置的 Doobie
我想让 hikari 交易者设置就像标准交易者一样
不幸的是,这给了我:
关于如何才能使其正常工作的任何想法?
请注意,以前的解决方案每次都使用单个连接并且可以正常工作:
但我真的可以使用连接池。
scala - 在 doobie 中编写用于理解的可选查询?
我想使用 doobie 中的 for-comprehension 在一个事务中运行多个查询。就像是:
我刚开始使用 doobie(和猫),所以我对 FreeMonads 不太熟悉。我一直在尝试不同的解决方案,但为了便于理解,看起来两个块都需要返回 cat.free.Free[doobie.free.connection.ConnectionOp,?]。
如果这是真的,有没有办法将我的 ConnectionIO[Image] (来自 addImage 调用)转换为 cat.free.Free[doobie.free.connection.ConnectionOp,Option[Image]] ?
scala - 创建案例类实例列表
我有 3 个 val,每个类型Array[String]
它们的长度都相等
val1.length == val2.length // 真
接下来,我创建了一个案例类,如下所示:
我想创建一个列表,List[resource]
这个列表的每个对象都是从val
s 的相应元素创建的,即val1
, val2
,val3
像这样的东西:
我不确定如何进行。我是使用 flatMap、foreach、for-loops 还是其他东西?
我们的想法是创建上述newList
内容,并将其与使用 doobie 从 SQL 数据库获得的结果进行比较。
scala - 1 个事务中的 Doobie 和 DB 访问组合
Doobie 书说,从存储库层返回 ConnectionIO 是一个好习惯。它提供了链接调用并在一个事务中执行它们的能力。好看又清晰。
现在让我们假设我们正在开发 REST API 服务,我们的场景是:
- 在数据库中查找对象
- 对这个对象执行一些异步操作(使用cats.effect.IO 或monix.eval.Task)。
- 将对象存储在数据库中。
我们希望在 1 个事务中执行所有这些步骤。问题是,如果没有transactor.trans()
我们在 2 个 monads 中工作的自然转换 -Task
和ConnectionIO
. 那是不可能的。
问题是 - 如何ConnectionIO
在 1 个组合中将 doobie 与任何效果 monad 混合,例如我们正在处理 1 个事务并能够在世界末日提交/回滚所有 DB 突变?
谢谢!
UPD:小例子
UPD2:@oleg-pyzhcov 提供的正确答案是将您的效果数据类型提升为ConnectionIO
如下所示:
sql - Scala Doobie 查询硬编码值
在 Doobie 中编写以下查询时:
我有数据列表,例如 List(1,2,3,4) ,它是可变大小的。如何使用 Doobie 将值列表插入 SQL VALUES CLAUSE?