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

0 投票
1 回答
472 浏览

scala - 如何通过一个请求将各种表中的数据放入单独的列表中

例如,我有一些实体。每个实体都有一些属性。DB看起来是这样的:

我的模型如下所示:

我正在尝试通过以下方式获取具有属性的实体(重要:不加入doobie

结果是一个List[Product]

如何修改 doobie 请求以将结果分成两个单独List[Entity]的和List[EntityAttribute]

0 投票
1 回答
377 浏览

scala - 如何使用 Doobie 在插入语句中获得可选结果?

我有一个可选的插入查询:

使用以下命令运行此查询:

失败了

结果集已用尽:预计会有更多行

那么condition是假的。

如何Optional[Long]使用 Doobie 从插入语句中获取结果?


UPD

.withGeneratedKeys[Long]("id")只是Long为了理解

如何检查id

0 投票
1 回答
463 浏览

scala - 杜比。编写 .update.withGeneratedKeys() 和 .update.run

参考这个问题。
我想通过某种条件插入一些实体。它可以插入也可以不插入。如果条件为真,则插入实体。我想在各种表中插入一些其他数据。它看起来像这样:

问题是这不能编译,因为第一个插入是 afs2.Stream而第二个不是。

我试图_ <- inserts.reduce..._ = inserts.reduce. 该应用程序可以编译,但inserts在第二行不会发生。


UPD
我解决这个问题的可能方法:

这行得通,但恕我直言,这并不漂亮。有更好的方法吗?

0 投票
1 回答
435 浏览

scala - 为什么 Doobie 使用免费的 monad?

看起来很简单

也可用于构建功能性 JDBC 层

0 投票
0 回答
97 浏览

postgresql - Doobie:创建带有值的常量表

Postgres 允许使用以下语法创建用于查询的常量表:

或内联版本:

假设我有一个案例类的实例Meta[T]T有没有一种方法可以编写一个通用函数来获取List[T]并创建一个T值表。

0 投票
1 回答
483 浏览

postgresql - 将动态变量传递给 INSERT INTO 查询时,在“$1”处或附近出现 Scala doobie 语法错误

我正在关注doobie的官方教程。

这是我的代码:

然后我运行并创建表: (drop, create).mapN(_ + _).transact(xa).unsafeRunSync

上面的所有内容都有效,并且与官方文档中的一样。

这是我自己的代码,之后是:

我也试过:

sql"""insert into person (id, name, age) VALUES $first, $second""".update.run.transact(xa).unsafeRunSync

但是他们都给了我:

org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1"

如何动态传递多个(可能超过 2 个)值INSERT INTO

0 投票
1 回答
1181 浏览

scala - 使用泛型的 Doobie 批量更新

你能用泛型类型在 doobie 中进行批量更新吗?

这段代码:

给我:could not find implicit value for parameter W: doobie.util.Write[T]

0 投票
0 回答
190 浏览

scala - 使用 doobie 阅读

我已经定义了存储库:

它的实现:

在应用程序中,我正在执行以下操作:

问题是我怎样才能将它打印到控制台?(通常对提取的数据进行一些操作)

我试过了:

但不成功

0 投票
3 回答
1937 浏览

scala - Doobie 更新和插入案例类语法

Doobie 可以select *使用案例类来方便和正确地传递参数,但我不知道如何以类似的方式使用updateand insert

例如,给定一个这样的案例类:

我可以很好地select记录。这种漂亮的语法是可能的,因为 Doobie 遍历案例类属性并通过将它们的名称与数据库记录字段Course匹配来为它们分配值:courses

但是insert,需要手动列出所有案例类属性,并与值匹配,这是可怕且容易出错的:

update同样可怕:

有没有更好的办法?

0 投票
1 回答
715 浏览

scala - SQL `NULL` 在第 1 列读取(JDBC 类型为 null),但映射到非选项类型

我想使用此查询选择最大值(表中的所有字段都不为空):

我知道,那张桌子可能是空的,所以我用这个:map(_.map(_ + 1).getOrElse(1))

问题是这个查询产生了这个错误:

SQLNULL在第 1 列读取(JDBC 类型为 null),但映射为非 Option 类型;在这里使用选项。请注意,JDBC 列索引是从 1 开始的。doobie.util.invariant$NonNullableColumnRead:SQLNULL在第 1 列读取(JDBC 类型为 null),但映射为非 Option 类型;在这里使用选项。请注意,JDBC 列索引是从 1 开始的。

如何解决?没有羽毛笔(使用纯 doobie)相同的查询正常工作